Theorem: Filter.hasBasis_iInf'
File: Mathlib/Order/Filter/Bases.lean

tactic: intro t
state_before: α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
⊢ ∀ (t : Set α),
    (t ∈ ⨅ (i : ι), l i) ↔
      ∃ i,
        (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
          (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ t

tactic: constructor
state_before: α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
t : Set α
⊢ (t ∈ ⨅ (i : ι), l i) ↔
    ∃ i,
      (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
        (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ t

tactic: simp only [mem_iInf', (hl _).mem_iff]
state_before: case mp
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
t : Set α
⊢ (t ∈ ⨅ (i : ι), l i) →
    ∃ i,
      (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
        (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ t

tactic: rintro ⟨I, hI, V, hV, -, rfl, -⟩
state_before: case mp
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
t : Set α
⊢ (∃ I,
      Set.Finite I ∧
        ∃ V,
          (∀ (i : ι), ∃ i_1, p i i_1 ∧ s i i_1 ⊆ V i) ∧
            (∀ (i : ι), ¬i ∈ I → V i = univ) ∧ (t = ⋂ (i : ι) (_ : i ∈ I), V i) ∧ t = ⋂ (i : ι), V i) →
    ∃ i,
      (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
        (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ t

tactic: choose u hu using hV
state_before: case mp.intro.intro.intro.intro.intro.intro
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
I : Set ι
hI : Set.Finite I
V : ι → Set α
hV : ∀ (i : ι), ∃ i_1, p i i_1 ∧ s i i_1 ⊆ V i
⊢ ∃ i,
    (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
      (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ ⋂ (i : ι) (_ : i ∈ I), V i

tactic: exact ⟨⟨I, u⟩, ⟨hI, fun i _ => (hu i).1⟩, iInter₂_mono fun i _ => (hu i).2⟩
state_before: case mp.intro.intro.intro.intro.intro.intro
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
I : Set ι
hI : Set.Finite I
V : ι → Set α
u : (i : ι) → ι' i
hu : ∀ (i : ι), p i (u i) ∧ s i (u i) ⊆ V i
⊢ ∃ i,
    (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
      (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ ⋂ (i : ι) (_ : i ∈ I), V i

tactic: rintro ⟨⟨I, f⟩, ⟨hI₁, hI₂⟩, hsub⟩
state_before: case mpr
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
t : Set α
⊢ (∃ i,
      (Set.Finite i.fst ∧ ∀ (i_1 : ι), i_1 ∈ i.fst → p i_1 (Prod.snd i i_1)) ∧
        (⋂ (i_1 : ι) (_ : i_1 ∈ i.fst), s i_1 (Prod.snd i i_1)) ⊆ t) →
    t ∈ ⨅ (i : ι), l i

tactic: refine' mem_of_superset _ hsub
state_before: case mpr.intro.mk.intro.intro
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
t : Set α
I : Set ι
f : (i : ι) → ι' i
hsub : (⋂ (i : ι) (_ : i ∈ (I, f).fst), s i (Prod.snd (I, f) i)) ⊆ t
hI₁ : Set.Finite (I, f).fst
hI₂ : ∀ (i : ι), i ∈ (I, f).fst → p i (Prod.snd (I, f) i)
⊢ t ∈ ⨅ (i : ι), l i

tactic: exact (biInter_mem hI₁).mpr fun i hi => mem_iInf_of_mem i <| (hl i).mem_of_mem <| hI₂ _ hi
state_before: case mpr.intro.mk.intro.intro
α : Type u_3
β : Type ?u.31201
γ : Type ?u.31204
ι✝ : Sort ?u.31207
ι'✝ : Sort ?u.31210
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_1
ι' : ι → Type u_2
l : ι → Filter α
p : (i : ι) → ι' i → Prop
s : (i : ι) → ι' i → Set α
hl : ∀ (i : ι), HasBasis (l i) (p i) (s i)
t : Set α
I : Set ι
f : (i : ι) → ι' i
hsub : (⋂ (i : ι) (_ : i ∈ (I, f).fst), s i (Prod.snd (I, f) i)) ⊆ t
hI₁ : Set.Finite (I, f).fst
hI₂ : ∀ (i : ι), i ∈ (I, f).fst → p i (Prod.snd (I, f) i)
⊢ (⋂ (i : ι) (_ : i ∈ (I, f).fst), s i (Prod.snd (I, f) i)) ∈ ⨅ (i : ι), l i