let id_prop_txt p = match p with
| Property.IPPredicate (pk,_,ki,idp) ->
Pretty_utils.sfprintf "%s_%d%a"
(predicate_kind_txt pk ki) idp.ip_id pp_names idp.ip_name
| Property.IPCodeAnnot (_,_, ca) ->
let name = match ca.annot_content with
| AAssert _ -> "assert"
| AInvariant _ -> "loop_inv"
| AVariant _ -> "loop_variant"
| _ -> "code_annot"
in Pretty_utils.sfprintf "%s_%d%a" name ca .annot_id
pp_names (code_annot_names ca)
| Property.IPComplete (_, _, lb) ->
Pretty_utils.sfprintf "complete_behaviors%a" pp_names lb
| Property.IPDisjoint (_, _, lb) ->
Pretty_utils.sfprintf "disjoint_behaviors%a" pp_names lb
| Property.IPDecrease _ -> "decrease"
| Property.IPAxiom name -> ("axiom_"^name)
| Property.IPAssigns (_kf, ki, _bhv, _) ->
let name = match ki with
| Kglobal -> "function_assigns"
| Kstmt s ->
match s.skind with
| Loop _ -> "loop_assigns_" ^ string_of_int s.sid
| _ -> "stmt_assigns_" ^ string_of_int s.sid
in name
| Property.IPBehavior _ -> ""
| Property.IPBlob state -> State.get_name state