(** * Properties of availability sets *)
(** These properties are not used in the semantic preservation proof, but establish some confidence in the availability analysis. *)
Definition avail_above (v: ident) (s: avail) : Prop :=
forall v' i', In (v', i') s -> Plt v v'.
Inductive wf_avail: avail -> Prop :=
| wf_avail_nil:
wf_avail nil
| wf_avail_cons: forall v i s,
avail_above v s ->
wf_avail s ->
wf_avail ((v, i) :: s).

Lemma wf_filter:
forall pred s, wf_avail s -> wf_avail (List.filter pred s).