let define_comp comp =
      List.iter
        (fun f ->
           let tr = C_comp comp in
           let te = Ctypes.object_of f.ftype in
           let pool = F.pool () in
           let xm = F.fresh pool "m" (Model M.tau_of_mem) in
           let xa,loc = M.forall_loc pool in
           let xv = F.fresh pool "e" (Model (D.tau_of_object te)) in
           let mem = F.var xm in
           let loc' = M.field loc f in
           let mem' = M.store_mem mem te loc' (M.value_of_logic te (F.var xv)) in
           let r0 = M.logic_of_value (M.load_mem mem tr loc) in
           let r1 = M.logic_of_value (M.load_mem mem' tr loc) in
           let r2 = F.wrap (D.upd_field (F.unwrap r0) f (F.var xv)) in
           let prop = F.p_forall (xm::xv::xa) (D.equal tr r1 r2) in
           let name = D.Compinfo.basename comp in
           let path = Pretty_utils.sfprintf "%s.%s" name f.fname in
           add_axiom name (D.Compinfo.location comp) name path prop
        ) comp.cfields