let get_id_prop_strategies ?(assigns=WithAssigns) cfg p =
Wp_parameters.debug ~level:3 "[wpAnnot.get_id_prop_strategies] %s@."
(id_prop_txt p);
let all_behaviors = None in
let default_behavior = Some [ Cil.default_behavior_name ] in
let get_code_annot_bhv annot =
match annot.annot_content with
| AAssert (l, _) | AInvariant (l, _, _) | AAssigns (l, _) ->
( match l with [] -> all_behaviors | _ -> Some l )
| _ -> all_behaviors
in
let b_of_fb_opt fb_opt = match fb_opt with
| None -> default_behavior
| Some fb -> Some [fb.b_name]
in
let ki, bhvs =
match p with
| Property.IPCodeAnnot (_,_,ca) ->
None, get_code_annot_bhv ca
| Property.IPAssigns (_, _, None, _) ->
None, default_behavior
| _ ->
Some (Property.get_kinstr p),
b_of_fb_opt (Property.get_behavior p)
in
get_strategies assigns cfg bhvs ki (IdProp p)