/-- Construct a realizer for filter bind -/
protected def bind {f : Filter α} {m : α → Filter β} (F : f.Realizer) (G : ∀ i, (m i).Realizer) :
    (f.bind m).Realizer :=
  ⟨Σs : F.σ, ∀ i ∈ F.F s, (G i).σ,
    { f := fun ⟨s, f⟩ ↦ ⋃ i ∈ F.F s, (G i).F (f i (by assumption))
      pt := ⟨F.F.pt, fun i _ ↦ (G i).F.pt⟩
      inf := fun ⟨a, f⟩ ⟨b, f'⟩ ↦
        ⟨F.F.inf a b, fun i h ↦
          (G i).F.inf (f i (F.F.inf_le_left _ _ h)) (f' i (F.F.inf_le_right _ _ h))⟩
      inf_le_left := fun _ _ _ ↦ by
        simp only [mem_iUnion, forall_exists_index]
        exact fun i h₁ h₂ ↦ ⟨i, F.F.inf_le_left _ _ h₁, (G i).F.inf_le_left _ _ h₂⟩
      inf_le_right := fun _ _ _ ↦ by
        simp only [mem_iUnion, forall_exists_index]
        exact fun i h₁ h₂ ↦ ⟨i, F.F.inf_le_right _ _ h₁, (G i).F.inf_le_right _ _ h₂⟩ },
    filter_eq <| Set.ext fun _ ↦ by
      cases' F with _ F _; subst f
      

Proof state:
case mk
α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
m : α → Filter β
G : (i : α) → Realizer (m i)
x✝ : Set β
σ✝ : Type ?u.42857
F : CFilter (Set α) σ✝
⊢ x✝ ∈
      (CFilter.toFilter
          {
            f := fun x =>
              match x with
              | { fst := s, snd := f } =>
                ⋃ i,
                  ⋃ (h : i ∈ CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F s),
                    CFilter.f (G i).F (f i h),
            pt :=
              { fst := { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F.pt,
                snd := fun i x => (G i).F.pt },
            inf := fun x x_1 =>
              match x with
              | { fst := a, snd := f } =>
                match x_1 with
                | { fst := b, snd := f' } =>
                  { fst := CFilter.inf { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F a b,
                    snd := fun i h =>
                      CFilter.inf (G i).F
                        (f i
                          (_ :
                            i ∈ CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F a))
                        (f' i
                          (_ :
                            i ∈
                              CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                b)) },
            inf_le_left :=
              (_ :
                ∀
                  (x x_1 :
                    (s : { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.σ) ×
                      ((i : α) →
                        i ∈ CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F s →
                          (G i).σ)),
                  ∀
                    x_2 ∈
                      (fun x =>
                          match x with
                          | { fst := s, snd := f } =>
                            ⋃ i,
                              ⋃ (h :
                                i ∈
                                  CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                    s),
                                CFilter.f (G i).F (f i h))
                        ((fun x x_3 =>
                            match x with
                            | { fst := a, snd := f } =>
                              match x_3 with
                              | { fst := b, snd := f' } =>
                                {
                                  fst :=
                                    CFilter.inf
                                      { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F a b,
                                  snd := fun i h =>
                                    CFilter.inf (G i).F
                                      (f i
                                        (_ :
                                          i ∈
                                            CFilter.f
                                              { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                              a))
                                      (f' i
                                        (_ :
                                          i ∈
                                            CFilter.f
                                              { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                              b)) })
                          x x_1),
                    x_2 ∈
                      (fun x =>
                          match x with
                          | { fst := s, snd := f } =>
                            ⋃ i,
                              ⋃ (h :
                                i ∈
                                  CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                    s),
                                CFilter.f (G i).F (f i h))
                        x),
            inf_le_right :=
              (_ :
                ∀
                  (x x_1 :
                    (s : { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.σ) ×
                      ((i : α) →
                        i ∈ CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F s →
                          (G i).σ)),
                  ∀
                    x_2 ∈
                      (fun x =>
                          match x with
                          | { fst := s, snd := f } =>
                            ⋃ i,
                              ⋃ (h :
                                i ∈
                                  CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                    s),
                                CFilter.f (G i).F (f i h))
                        ((fun x x_3 =>
                            match x with
                            | { fst := a, snd := f } =>
                              match x_3 with
                              | { fst := b, snd := f' } =>
                                {
                                  fst :=
                                    CFilter.inf
                                      { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F a b,
                                  snd := fun i h =>
                                    CFilter.inf (G i).F
                                      (f i
                                        (_ :
                                          i ∈
                                            CFilter.f
                                              { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                              a))
                                      (f' i
                                        (_ :
                                          i ∈
                                            CFilter.f
                                              { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                              b)) })
                          x x_1),
                    x_2 ∈
                      (fun x =>
                          match x with
                          | { fst := s, snd := f } =>
                            ⋃ i,
                              ⋃ (h :
                                i ∈
                                  CFilter.f { σ := σ✝, F := F, eq := (_ : CFilter.toFilter F = CFilter.toFilter F) }.F
                                    s),
                                CFilter.f (G i).F (f i h))
                        x_1) }).sets ↔
    x✝ ∈ (bind (CFilter.toFilter F) m).sets

Next tactic:
simp only [CFilter.toFilter, iUnion_subset_iff, Sigma.exists, Filter.mem_sets, mem_bind]