Ltac ungather_entail :=
match goal with
  | |- EVAR (forall x : ?t, _) =>
       let x' := fresh x in evar (x' : t);
       let x'' := fresh x in apply EVAR_i; intro x'';
       replace x'' with x'; [ungather_entail; clear x'' | admit ]
  | |- _ => intros
 end.

(* Specifications: *)
Lemma offset_val_sizeof_hack: forall cenv t i p, isptr p -> i=0 -> (offset_val (@sizeof cenv t * i) p = p) = True.
Lemma offset_val_sizeof_hack2: forall cenv t i j p, isptr p -> i=j -> (offset_val (@sizeof cenv t * i) p = offset_val (@sizeof cenv t * j) p) = True.
Lemma offset_val_sizeof_hack3: forall cenv t i p, isptr p -> i=1 -> (offset_val (@sizeof cenv t * i) p = offset_val (@sizeof cenv t) p) = True.