(* simple solver for irrelevant goals *)
(* TODO replace args y AA b0 h0 with "fresh" *)
Ltac solve_irrelevant y AA b0 h0 :=
match goal with
[ H1 : irrelevant _ _ _ |- _ ] => inversion H1 end;
match goal with
[ H4 : forall x A, binds x _ _ -> x `notin` _ |- _ ] =>
simpl in H4; econstructor; eauto;
try (intros y AA b0; move: (H4 y AA b0) => h0; fsetdec) end.

(* paths are not (erased) abstractions. *)
Lemma paths_arent_abs :
forall a T, Path T a -> forall rho b, a = a_UAbs rho b -> False.