proposition: Lemma all_unionP : all P enum_union.
proof: Proof. Proof using HPTi. rewrite /enum_union. apply/allP => x /flatten_mapP[i /mapP[ifin Hi ->{i}] /mapP[xfin Hx ->{x}]]. by have:= valP xfin; rewrite -HPTi /= => /andP[]. Qed.
imports: HB(structures) mathcomp(all_ssreflect) tools