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"