Unnamed
public text v1 · immutablebag_union(B1,B2,B) :-
msort(B1, SortedB1),
msort(B2, SortedB2),
findall([X,N]
,( member([X,N1],SortedB1), member([X,N2],SortedB2,
N is N1 + N2
; member([X,N],SortedB1), \+ member([X,_],SortedB2)
; member([X,N],SortedB2), \+ member([X,_],SortedB1)
)
,B
).