let compile (te,dims) =
       let tau = tau_of_ctype te in
       let tau_dim = tau_of_darray tau dims in
       let aid = LogicId.create ("Is_" ^ darray_name te dims) in 
       let pool = LogicLang.pool () in
       let a = LogicLang.fresh pool "a" tau_dim in
       let condition = is_darray pool te dims (e_var a) in
       LogicDef.declare {
         d_name = aid ;
         d_item = PREDICATE([a],Some condition) ;
         d_descr = {
           t_source = Lexing.dummy_pos ;
           t_short = "subtype of array" ;
           t_descr = "" ;
         } ;
       } ; aid