let merge_assigns s1 s2 =
    match s1,s2 with
      | NoAssigns,NoAssigns -> NoAssigns
      | NoAssigns,a -> a
      | a,NoAssigns -> a
      | EffectAssigns a1 , EffectAssigns a2 when a1 == a2 -> s1
      | RegionAssigns r1 , RegionAssigns r2 when r1 == r2 -> s1
      | _ -> Wp_parameters.fatal "Merging different assigns goals"