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"
| APragma _ -> "code_annot"
| _ -> assert false
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 (_,_,None,_) -> "decreases"
| Property.IPDecrease _ -> "loop_variant"
| Property.IPAxiom name -> "axiom_" ^ name
| Property.IPAxiomatic(name, _) -> "axiomatic_" ^ name
| Property.IPLemma name -> "lemma_" ^ 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.IPFrom (_, _, _, (out,_)) ->
"from_id_"^(string_of_int (out.it_id))
| Property.IPUnreachable _ -> "unreachable stmt"
| Property.IPBehavior(_, _, b) -> b.b_name
| Property.IPOther(s,_,_) -> s