let compile compinfo =
       let record = record_of compinfo in
       let pid = LogicId.create ("Is_" ^ compinfo.cname) in
       let pool = LogicLang.pool () in
       let r_var = LogicLang.fresh pool "r" (Record record) in
       let r_val = e_var r_var in
       let has_ftype f = 
         !dhas_ctype f.Cil_types.ftype (e_getfield r_val (field_of f))
       in
       let condition = p_conj (List.map has_ftype compinfo.cfields) in
       LogicDef.declare {
         d_name = pid ;
         d_item = PREDICATE([r_var],Some condition) ;
         d_descr = {
           t_source = Lexing.dummy_pos ;
           t_short = "subtype " ^ compinfo.corig_name ;
           t_descr = "" ;
         } ;
       } ; pid