Definition union_default_filter m :=
match m with
| nil => fun _ => false
| hd :: _ => fun m => if member_dec hd m then true else false
end.
Definition is_default_filter {A} f (l: list A) :=
match l with
| nil => True
| hd :: _ => f hd = true
end.

(* Specifications: *)
Lemma union_default_filter_is_default_filter: forall m, is_default_filter (union_default_filter m) m.
Lemma const_true_is_default_filter: forall m, is_default_filter (fun _: ident * type => true) m.
Definition struct_default_val (m : members) := compact_prod_gen (fun it => default_val (field_type (fst it) m)) m.