let rec eq_data d1 d2 =
let eq_exp = Fol.eq_term eq_data in
let rec eq d1 d2 = match d1, d2 with
| E1addr v1, E1addr v2 -> v1.Cil_types.lv_id = v2.Cil_types.lv_id
| E1addr _, _ -> false
| E1indir e1, E1indir e2 -> eq_exp e1 e2
| E1indir _, _ -> false
| E1proj (e1, ch1), E1proj (e2, ch2) ->
eq_exp e1 e2 && WpFol.eq_epath eq_exp ch1 ch2
| E1proj _, _ -> false
| E1depl (e1, ch1), E1depl (e2, ch2) ->
eq_exp e1 e2 && WpFol.eq_epath eq_exp ch1 ch2
| E1depl _, _ -> false
| E1shift (e1, i1), E1shift (e2, i2) ->
eq_exp e1 e2 && eq_exp i1 i2
| E1shift _, _ -> false
| E1mu (e1, ch1, x1), E1mu (e2, ch2, x2) ->
eq_exp e1 e2 && WpFol.eq_epath eq_exp ch1 ch2 && eq_exp x1 x2
| E1mu _, _ -> false
| E1muI (e1, x1), E1muI (e2, x2) -> eq_exp e1 e2 && eq_exp x1 x2
| E1muI _, _ -> false
in eq d1 d2