let
merge_with f (a,p) (a',p') =
merge_assigns a a' , merge_property f p p'