/-- Construct a realizer for the sup of two filters -/
protected def sup {f g : Filter α} (F : f.Realizer) (G : g.Realizer) : (f ⊔ g).Realizer :=
  ⟨F.σ × G.σ,
    { f := fun ⟨s, t⟩ ↦ F.F s ∪ G.F t
      pt := (F.F.pt, G.F.pt)
      inf := fun ⟨a, a'⟩ ⟨b, b'⟩ ↦ (F.F.inf a b, G.F.inf a' b')
      inf_le_left := fun _ _ ↦ union_subset_union (F.F.inf_le_left _ _) (G.F.inf_le_left _ _)
      inf_le_right := fun _ _ ↦ union_subset_union (F.F.inf_le_right _ _) (G.F.inf_le_right _ _) },
    filter_eq <| Set.ext fun _ ↦ by cases F; cases G; substs f g; 

Proof state:
case mk.mk
α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
x✝ : Set α
σ✝¹ : Type ?u.21233
F✝¹ : CFilter (Set α) σ✝¹
σ✝ : Type ?u.21288
F✝ : CFilter (Set α) σ✝
⊢ x✝ ∈
      (CFilter.toFilter
          {
            f := fun x =>
              match x with
              | (s, t) =>
                CFilter.f { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F s ∪
                  CFilter.f { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F t,
            pt :=
              ({ σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F.pt,
                { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F.pt),
            inf := fun x x_1 =>
              match x with
              | (a, a') =>
                match x_1 with
                | (b, b') =>
                  (CFilter.inf { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F a b,
                    CFilter.inf { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F a' b'),
            inf_le_left :=
              (_ :
                ∀
                  (x x_1 :
                    { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.σ ×
                      { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.σ),
                  CFilter.f { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F
                        (CFilter.inf { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F
                          x.1 x_1.1) ∪
                      CFilter.f { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F
                        (CFilter.inf { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F x.2
                          x_1.2) ⊆
                    CFilter.f { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F x.1 ∪
                      CFilter.f { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F x.2),
            inf_le_right :=
              (_ :
                ∀
                  (x x_1 :
                    { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.σ ×
                      { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.σ),
                  CFilter.f { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F
                        (CFilter.inf { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F
                          x.1 x_1.1) ∪
                      CFilter.f { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F
                        (CFilter.inf { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F x.2
                          x_1.2) ⊆
                    CFilter.f { σ := σ✝¹, F := F✝¹, eq := (_ : CFilter.toFilter F✝¹ = CFilter.toFilter F✝¹) }.F x_1.1 ∪
                      CFilter.f { σ := σ✝, F := F✝, eq := (_ : CFilter.toFilter F✝ = CFilter.toFilter F✝) }.F
                        x_1.2) }).sets ↔
    x✝ ∈ (CFilter.toFilter F✝¹ ⊔ CFilter.toFilter F✝).sets

Next tactic:
simp [CFilter.toFilter]