let do_wp_passes fun_iter behaviors property =
let model = Wp_parameters.get_model () in
let goals = ref Bag.empty in
let wp_pass computer assigns =
do_compute goals computer fun_iter assigns behaviors property
in
begin
match computer model with
| NonAssigns c ->
Wp_parameters.warning
~current:false ~once:true
"Ignored Assigns-Goals with '%s' model"
(Wp_parameters.Model.get ()) ;
wp_pass c WpAnnot.NoAssigns
| OneforBoth c ->
wp_pass c WpAnnot.WithAssigns
| OneforEach(c1,c2) ->
match property with
| None | Some (NamedProp _ | IdProp(IPBlob _ | IPBehavior _)) ->
begin
wp_pass c1 WpAnnot.NoAssigns ;
wp_pass c2 WpAnnot.OnlyAssigns ;
end
| Some(IdProp( IPPredicate _ | IPAxiom _
| IPCodeAnnot _ | IPComplete _
| IPDisjoint _ | IPDecrease _ )) ->
wp_pass c1 WpAnnot.NoAssigns
| Some (IdProp(IPAssigns _)) ->
wp_pass c2 WpAnnot.OnlyAssigns
end ; !goals