Section filter_from_subbasis.
Variable X:Type.
Variable B:Family X.
Hypothesis B_subbasis_cond: forall (J:Type) (V:J->Ensemble X),
FiniteT J -> (forall j:J, In B (V j)) ->
Inhabited (IndexedIntersection V).
Definition Build_Filter_from_subbasis: Filter X.
refine (Build_Filter_from_basis (finite_intersections B) _ _ _).
- exists Full_set.
constructor.
- red; intro.
pose proof (finite_intersection_is_finite_indexed_intersection _ _ H).
destruct H0 as [J [? [V []]]].
assert (Inhabited (IndexedIntersection V)).
{ apply B_subbasis_cond; trivial. }
rewrite <- H2 in H3.
destruct H3.
destruct H3.
- intros.
exists (Intersection S1 S2); split; auto with sets.
constructor 3; trivial.
Defined.
End filter_from_subbasis.
Arguments Build_Filter_from_subbasis {X}.
Definition ultrafilter {X:Type} (F:Filter X) : Prop :=
forall S:Ensemble X, In (filter_family F) S \/
In (filter_family F) (Ensembles.Complement S).

Lemma ultrafilter_extension: forall {X:Type} (F:Filter X),
exists U:Filter X, Included (filter_family F) (filter_family U) /\
ultrafilter U.