let declare obj _ =
         let pool = F.pool () in
         let xt = F.p_fresh pool "t"
           (Model (ADT("farray",[tau_of_object obj])))
         in
         let t = F.var xt in
         let xi = F.p_fresh pool "i" (Model Integerin
         let i = F.var xi in
         let xlow = F.p_fresh pool "low" (Model Integerin
         let low = F.var xlow in
         let xhigh = F.p_fresh pool "high" (Model Integerin
         let high = F.var xhigh in
         let is_init =
           F.p_app3 ((InitObjRange.get_definition obj).d_name) t low high
         in
         let i_low = F.p_icmp Cleq low i in
         let i_high = F.p_icmp Clt i high in
         let i_init =
           !init_value_term_rec pool (F.acc_index (F.unwrap t) i) obj
         in
         let body =
           F.p_forall [xi]
             (F.p_implies i_low (F.p_implies i_high i_init))
         in
         Formula.Axiom
           (F.p_forall [xt;xlow;xhigh] (F.p_iff is_init body))