let user_prop_names p = match property_of_id p with
    | Property.IPPredicate (_,_,_,idp) -> idp.ip_name
    | Property.IPCodeAnnot (_,_, ca) -> code_annot_names ca
    | Property.IPComplete (_, _, lb) ->
        let name =
          Pretty_utils.sfprintf  "complete_behaviors%a" pp_names lb
        in [name]
    | Property.IPDisjoint (_, _, lb) ->
        let name = Pretty_utils.sfprintf  "disjoint_behaviors%a" pp_names lb
        in [name]
    | Property.IPAssigns (_, _, _, id_t_list) ->
        let add_name names (z, _) = match z with Nothing -> names
          | Location { it_content = {term_name = l}}  -> l @ names
        in List.fold_left add_name ["assigns"] id_t_list
    | Property.IPAxiom _
    | Property.IPDecrease _ -> (*TODO: add more names ? *) []
    | Property.IPBehavior _
    | Property.IPBlob _ -> []