let merge_property f w1 w2 =
    D.capture (List.map L.as_hint w1.instances) w1.bindings ;
    D.capture (List.map L.as_hint w2.instances) w2.bindings ;
    {
      bindings=D.closed ;
      instances=L.merge w1.instances w2.instances ;
      property=f
        (D.close w1.bindings w1.property)
        (D.close w2.bindings w2.property) ;
    }