let rec eq_data d1 d2 =
let eq_exp = Fol.eq_term eq_data in
let rec eq d1 d2 = match d1, d2 with
| E2addr v1, E2addr v2 -> v1.Cil_types.lv_id = v2.Cil_types.lv_id
| E2addr _, _ -> false
| E2depl (e1, ch1), E2depl (e2, ch2) ->
eq_exp e1 e2 && WpFol.eq_epath eq_exp ch1 ch2
| E2depl _, _ -> false
| E2proj (e1, ch1), E2proj (e2, ch2) ->
eq_exp e1 e2 && WpFol.eq_epath eq_exp ch1 ch2
| E2proj _, _ -> false
| E2shift (e1, i1), E2shift (e2, i2) ->
eq_exp e1 e2 && eq_exp i1 i2
| E2shift _, _ -> false
| E2load (e1, x1), E2load (e2, x2) ->
eq_exp e1 e2 && eq_exp x1 x2
| E2load _, _ -> false
| E2store (m1, e1, i1), E2store (m2, e2, i2) ->
eq_exp m1 m2 && eq_exp e1 e2 && eq_exp i1 i2
| E2store _, _ -> false
in eq d1 d2