let check_assigns m goal region wp =
    match goal , region with
      | NoAssigns , _ -> wp
      | (EffectAssigns _ ) , A_everything ->
          Datalib.Collector.add_warning
            ~severe:true
            ~reason:"Assigns everything during calculus"
            "Can not prove the assign goal" ;
          F.p_false
      | EffectAssigns a , A_region zones ->
          let ze = List.fold_left
            (fun zs a ->
               let za = WpModel.dzone_assigned m a in
               WpModel.dzone_union zs za)
            (F.var a.a_effect) zones
          in
          D.subst a.a_effect ze wp