(* helper tactic for progress lemma below. Dispatches goals of the form "irrelevant G a " by inversion on IR, a similar assumption in the context *)
Ltac show_irrelevant IR :=
let x := fresh in
let A0 := fresh in
let B0 := fresh in
let h0 := fresh in
let h1 := fresh in
unfold irrelevant in *;
move: IR => [h0 h1]; split; auto;
intros x A0 B0;  apply h0 in B0; simpl in B0; fsetdec.

(* Specifications: *)
Lemma notin_sub : forall x a b, x `notin` a -> b [<=] a -> x `notin` b.
intros. fsetdec.