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