let rec logic_offset env a = function
    | TNoOffset -> Data a
    | TField(f,off) ->
        let fieldvalue = D.acc_field (F.unwrap a) f in
        logic_offset env fieldvalue off
    | TIndex (t,off) ->
        let i = integer_of_data (kind_of t.term_type) (!data_rec env t) in
        logic_offset env (D.acc_index (F.unwrap a) i) off