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