Definition efield_beq a b :=
match a, b with
| eStructField x, eStructField y => eqb_ident x y
| eUnionField x, eUnionField y => eqb_ident x y
| eArraySubsc x, eArraySubsc y => expr_beq x y
| _, _ => false
end.

Lemma efield_beq_spec: forall a b, efield_beq a b = true <-> a = b.
Instance RelDec_efield_beq: RelDec (@eq efield) := { rel_dec := efield_beq }.