diff --git a/src/order/filter/bases.lean b/src/order/filter/bases.lean index cff7b7d9156fe..d32d0e260209b 100644 --- a/src/order/filter/bases.lean +++ b/src/order/filter/bases.lean @@ -342,6 +342,19 @@ lemma has_basis.prod_self (hl : l.has_basis p s) : { rintros ⟨i, hi, H⟩, exact ⟨s i, hl.mem_of_mem hi, s i, hl.mem_of_mem hi, H⟩ } end⟩ + +lemma has_basis.exists_iff (hl : l.has_basis p s) {P : set α → Prop} + (mono : ∀ ⦃s t⦄, s ⊆ t → P t → P s) : + (∃ s ∈ l, P s) ↔ ∃ (i) (hi : p i), P (s i) := +⟨λ ⟨s, hs, hP⟩, let ⟨i, hi, his⟩ := hl.mem_iff.1 hs in ⟨i, hi, mono his hP⟩, + λ ⟨i, hi, hP⟩, ⟨s i, hl.mem_of_mem hi, hP⟩⟩ + +lemma has_basis.forall_iff (hl : l.has_basis p s) {P : set α → Prop} + (mono : ∀ ⦃s t⦄, s ⊆ t → P s → P t) : + (∀ s ∈ l, P s) ↔ ∀ i, p i → P (s i) := +⟨λ H i hi, H (s i) $ hl.mem_of_mem hi, + λ H s hs, let ⟨i, hi, his⟩ := hl.mem_iff.1 hs in mono his (H i hi)⟩ + variables [preorder ι] (l p s) /-- `is_antimono_basis p s` means the image of `s` bounded by `p` is a filter basis @@ -357,6 +370,7 @@ structure has_antimono_basis [preorder ι] (l : filter α) (p : ι → Prop) (s extends has_basis l p s : Prop := (decreasing : ∀ {i j}, p i → p j → i ≤ j → s j ⊆ s i) (mono : monotone p) + end same_type section two_types