diff -r 994a2b9daf1d -r 8f7f626aacaa src/HOL/Library/Multiset.thy --- a/src/HOL/Library/Multiset.thy Sat Oct 30 11:59:23 2021 +0200 +++ b/src/HOL/Library/Multiset.thy Sat Oct 30 11:59:41 2021 +0200 @@ -3307,15 +3307,11 @@ setup \ let - fun msetT T = Type (\<^type_name>\multiset\, [T]); - - fun mk_mset T [] = Const (\<^const_abbrev>\empty_mset\, msetT T) - | mk_mset T [x] = - Const (\<^const_name>\add_mset\, T --> msetT T --> msetT T) $ x $ - Const (\<^const_abbrev>\empty_mset\, msetT T) - | mk_mset T (x :: xs) = - Const (\<^const_name>\plus\, msetT T --> msetT T --> msetT T) $ - mk_mset T [x] $ mk_mset T xs + fun msetT T = \<^Type>\multiset T\; + + fun mk_mset T [] = \<^instantiate>\'a = T in term \{#}\\ + | mk_mset T [x] = \<^instantiate>\'a = T and x in term \{#x#}\\ + | mk_mset T (x :: xs) = \<^Const>\plus \msetT T\ for \mk_mset T [x]\ \mk_mset T xs\\ fun mset_member_tac ctxt m i = if m <= 0 then @@ -3420,10 +3416,8 @@ in (case maps elems_for (all_values elem_T) @ (if maybe_opt then [Const (Nitpick_Model.unrep_mixfix (), elem_T)] else []) of - [] => Const (\<^const_name>\zero_class.zero\, T) - | ts => - foldl1 (fn (s, t) => Const (\<^const_name>\add_mset\, elem_T --> T --> T) $ s $ t) - ts) + [] => \<^Const>\Groups.zero T\ + | ts => foldl1 (fn (s, t) => \<^Const>\add_mset elem_T for s t\) ts) end | multiset_postproc _ _ _ _ t = t in Nitpick_Model.register_term_postprocessor \<^typ>\'a multiset\ multiset_postproc end