F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ IsOpen (Set.range toContinuousMapᶜ)
suffices
  Set.range (toContinuousMap : ContinuousMonoidHom A B → C(A, B)) =
    ({ f | f '' {1} ⊆ {1}ᶜ } ∪
        ⋃ (x) (y) (U) (V) (W) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W),
          { f | f '' {x} ⊆ U } ∩ { f | f '' {y} ⊆ V } ∩ { f | f '' {x * y} ⊆ W } :
            Set C(A , B))ᶜ by
  rw [this, compl_compl]
  refine' (ContinuousMap.isOpen_gen isCompact_singleton isOpen_compl_singleton).union _
  repeat' apply isOpen_iUnion; intro
  repeat' apply IsOpen.inter
  all_goals apply ContinuousMap.isOpen_gen isCompact_singleton; assumption
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ ∀ (x : C(A, B)),
    x ∈ Set.range toContinuousMap ↔
      ¬x ∈ {f | ¬↑f 1 ∈ {1}} ∧
        ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
          IsOpen i_2 →
            IsOpen i_3 →
              IsOpen i_4 →
                Disjoint (i_2 * i_3) i_4 → ¬x ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
simp_rw [Set.compl_union, Set.compl_iUnion, Set.image_singleton, Set.singleton_subset_iff,
  Set.ext_iff, Set.mem_inter_iff, Set.mem_iInter, Set.mem_compl_iff]
case refine'_1
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
⊢ f ∈ Set.range toContinuousMap →
    ¬f ∈ {f | ¬↑f 1 ∈ {1}} ∧
      ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
        IsOpen i_2 →
          IsOpen i_3 →
            IsOpen i_4 →
              Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}

case refine'_2
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
⊢ (¬f ∈ {f | ¬↑f 1 ∈ {1}} ∧
      ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
        IsOpen i_2 →
          IsOpen i_3 →
            IsOpen i_4 →
              Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}) →
    f ∈ Set.range toContinuousMap
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
⊢ ∀ (x : C(A, B)),
    x ∈ Set.range toContinuousMap ↔
      ¬x ∈ {f | ¬↑f 1 ∈ {1}} ∧
        ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
          IsOpen i_2 →
            IsOpen i_3 →
              IsOpen i_4 →
                Disjoint (i_2 * i_3) i_4 → ¬x ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
refine' fun f => ⟨_, _⟩
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
⊢ IsOpen
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
      ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
        Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
⊢ IsOpen (Set.range toContinuousMapᶜ)
rw [this, compl_compl]
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
⊢ IsOpen
    (⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
      Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
⊢ IsOpen
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
      ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
        Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})
refine' (ContinuousMap.isOpen_gen isCompact_singleton isOpen_compl_singleton).union _
case h.h.h.h.h.h.h.h.h
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen ({f | ↑f '' {i✝⁸} ⊆ i✝⁶} ∩ {f | ↑f '' {i✝⁷} ⊆ i✝⁵} ∩ {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴})
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
⊢ IsOpen
    (⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
      Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})
repeat' apply isOpen_iUnion; intro
case h.h.h.h.h.h.h.h.h.h₁.h₁
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸} ⊆ i✝⁶}

case h.h.h.h.h.h.h.h.h.h₁.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁷} ⊆ i✝⁵}

case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴}
case h.h.h.h.h.h.h.h.h
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen ({f | ↑f '' {i✝⁸} ⊆ i✝⁶} ∩ {f | ↑f '' {i✝⁷} ⊆ i✝⁵} ∩ {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴})
repeat' apply IsOpen.inter
no goals
case h.h.h.h.h.h.h.h.h.h₁.h₁
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸} ⊆ i✝⁶}

case h.h.h.h.h.h.h.h.h.h₁.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁷} ⊆ i✝⁵}

case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴}
all_goals apply ContinuousMap.isOpen_gen isCompact_singleton; assumption
case h.h.h.h.h.h.h.h.h
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen ({f | ↑f '' {i✝⁸} ⊆ i✝⁶} ∩ {f | ↑f '' {i✝⁷} ⊆ i✝⁵} ∩ {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴})
case h.h.h.h.h.h.h.h.h
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen ({f | ↑f '' {i✝⁸} ⊆ i✝⁶} ∩ {f | ↑f '' {i✝⁷} ⊆ i✝⁵} ∩ {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴})
apply isOpen_iUnion
case h.h.h.h.h.h.h.h.h
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen ({f | ↑f '' {i✝⁸} ⊆ i✝⁶} ∩ {f | ↑f '' {i✝⁷} ⊆ i✝⁵} ∩ {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴})
case h.h.h.h.h.h.h.h.h
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁷ i✝⁶ : A
i✝⁵ i✝⁴ i✝³ : Set B
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : IsOpen i✝³
⊢ Disjoint (i✝⁵ * i✝⁴) i✝³ → IsOpen ({f | ↑f '' {i✝⁷} ⊆ i✝⁵} ∩ {f | ↑f '' {i✝⁶} ⊆ i✝⁴} ∩ {f | ↑f '' {i✝⁷ * i✝⁶} ⊆ i✝³})
intro
case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴}
case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴}
apply IsOpen.inter
case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen i✝⁴
case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen {f | ↑f '' {i✝⁸ * i✝⁷} ⊆ i✝⁴}
apply ContinuousMap.isOpen_gen isCompact_singleton
no goals
case h.h.h.h.h.h.h.h.h.h₂
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
this :
  Set.range toContinuousMap =
    ({f | ↑f '' {1} ⊆ {1}ᶜ} ∪
        ⋃ (x : A) (y : A) (U : Set B) (V : Set B) (W : Set B) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
          Disjoint (U * V) W), {f | ↑f '' {x} ⊆ U} ∩ {f | ↑f '' {y} ⊆ V} ∩ {f | ↑f '' {x * y} ⊆ W})ᶜ
i✝⁸ i✝⁷ : A
i✝⁶ i✝⁵ i✝⁴ : Set B
i✝³ : IsOpen i✝⁶
i✝² : IsOpen i✝⁵
i✝¹ : IsOpen i✝⁴
i✝ : Disjoint (i✝⁶ * i✝⁵) i✝⁴
⊢ IsOpen i✝⁴
assumption
case refine'_1.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : ContinuousMonoidHom A B
⊢ ¬toContinuousMap f ∈ {f | ¬↑f 1 ∈ {1}} ∧
    ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
      IsOpen i_2 →
        IsOpen i_3 →
          IsOpen i_4 →
            Disjoint (i_2 * i_3) i_4 →
              ¬toContinuousMap f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
case refine'_1
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
⊢ f ∈ Set.range toContinuousMap →
    ¬f ∈ {f | ¬↑f 1 ∈ {1}} ∧
      ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
        IsOpen i_2 →
          IsOpen i_3 →
            IsOpen i_4 →
              Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
rintro ⟨f, rfl⟩
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
⊢ f ∈ Set.range toContinuousMap
case refine'_2
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
⊢ (¬f ∈ {f | ¬↑f 1 ∈ {1}} ∧
      ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
        IsOpen i_2 →
          IsOpen i_3 →
            IsOpen i_4 →
              Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}) →
    f ∈ Set.range toContinuousMap
rintro ⟨hf1, hf2⟩
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
⊢ ∀ (x y : A), ↑f (x * y) = ↑f x * ↑f y
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
⊢ f ∈ Set.range toContinuousMap
suffices ∀ x y, f (x * y) = f x * f y by
  refine'
    ⟨({ f with
          map_one' := of_not_not hf1
          map_mul' := this } :
        ContinuousMonoidHom A B),
      ContinuousMap.ext fun _ => rfl⟩
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
x y : A
⊢ ↑f (x * y) = ↑f x * ↑f y
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
⊢ ∀ (x y : A), ↑f (x * y) = ↑f x * ↑f y
intro x y
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
x y : A
⊢ ↑f (x * y) = ↑f x * ↑f y
contrapose! hf2
case refine'_2.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
case refine'_2.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
obtain ⟨UV, W, hUV, hW, hfUV, hfW, h⟩ := t2_separation hf2.symm
case refine'_2.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
case refine'_2.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
have hB := @continuous_mul B _ _ _
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
U V : Set B
hU : IsOpen U
hV : IsOpen V
hfU : ↑f x ∈ U
hfV : ↑f y ∈ V
h' : U ×ˢ V ⊆ (fun p => p.fst * p.snd) ⁻¹' UV
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
case refine'_2.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
obtain ⟨U, V, hU, hV, hfU, hfV, h'⟩ :=
  isOpen_prod_iff.mp (hUV.preimage hB) (f x) (f y) hfUV
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
U V : Set B
hU : IsOpen U
hV : IsOpen V
hfU : ↑f x ∈ U
hfV : ↑f y ∈ V
h' : U ×ˢ V ⊆ (fun p => p.fst * p.snd) ⁻¹' UV
⊢ U * V ≤ UV
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
U V : Set B
hU : IsOpen U
hV : IsOpen V
hfU : ↑f x ∈ U
hfV : ↑f y ∈ V
h' : U ×ˢ V ⊆ (fun p => p.fst * p.snd) ⁻¹' UV
⊢ ∃ i i_1 i_2 i_3 i_4,
    IsOpen i_2 ∧
      IsOpen i_3 ∧
        IsOpen i_4 ∧ Disjoint (i_2 * i_3) i_4 ∧ f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
refine' ⟨x, y, U, V, W, hU, hV, hW, h.mono_left _, ⟨hfU, hfV⟩, hfW⟩
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x✝ y✝ : A
hf2 : ↑f (x✝ * y✝) ≠ ↑f x✝ * ↑f y✝
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x✝ * ↑f y✝ ∈ UV
hfW : ↑f (x✝ * y✝) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
U V : Set B
hU : IsOpen U
hV : IsOpen V
hfU : ↑f x✝ ∈ U
hfV : ↑f y✝ ∈ V
h' : U ×ˢ V ⊆ (fun p => p.fst * p.snd) ⁻¹' UV
x y : B
hx : (x, y).fst ∈ U
hy : (x, y).snd ∈ V
⊢ (fun x x_1 => x * x_1) x y ∈ UV
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x y : A
hf2 : ↑f (x * y) ≠ ↑f x * ↑f y
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x * ↑f y ∈ UV
hfW : ↑f (x * y) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
U V : Set B
hU : IsOpen U
hV : IsOpen V
hfU : ↑f x ∈ U
hfV : ↑f y ∈ V
h' : U ×ˢ V ⊆ (fun p => p.fst * p.snd) ⁻¹' UV
⊢ U * V ≤ UV
rintro _ ⟨x, y, hx : (x, y).1 ∈ U, hy : (x, y).2 ∈ V, rfl⟩
no goals
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
x✝ y✝ : A
hf2 : ↑f (x✝ * y✝) ≠ ↑f x✝ * ↑f y✝
UV W : Set B
hUV : IsOpen UV
hW : IsOpen W
hfUV : ↑f x✝ * ↑f y✝ ∈ UV
hfW : ↑f (x✝ * y✝) ∈ W
h : Disjoint UV W
hB : Continuous fun p => p.fst * p.snd
U V : Set B
hU : IsOpen U
hV : IsOpen V
hfU : ↑f x✝ ∈ U
hfV : ↑f y✝ ∈ V
h' : U ×ˢ V ⊆ (fun p => p.fst * p.snd) ⁻¹' UV
x y : B
hx : (x, y).fst ∈ U
hy : (x, y).snd ∈ V
⊢ (fun x x_1 => x * x_1) x y ∈ UV
exact h' ⟨hx, hy⟩
no goals
F : Type ?u.142376
A : Type u_2
B : Type u_1
C : Type ?u.142385
D : Type ?u.142388
E : Type ?u.142391
inst✝¹² : Monoid A
inst✝¹¹ : Monoid B
inst✝¹⁰ : Monoid C
inst✝⁹ : Monoid D
inst✝⁸ : CommGroup E
inst✝⁷ : TopologicalSpace A
inst✝⁶ : TopologicalSpace B
inst✝⁵ : TopologicalSpace C
inst✝⁴ : TopologicalSpace D
inst✝³ : TopologicalSpace E
inst✝² : TopologicalGroup E
inst✝¹ : ContinuousMul B
inst✝ : T2Space B
f : C(A, B)
hf1 : ¬f ∈ {f | ¬↑f 1 ∈ {1}}
hf2 :
  ∀ (i i_1 : A) (i_2 i_3 i_4 : Set B),
    IsOpen i_2 →
      IsOpen i_3 →
        IsOpen i_4 → Disjoint (i_2 * i_3) i_4 → ¬f ∈ {f | ↑f i ∈ i_2} ∩ {f | ↑f i_1 ∈ i_3} ∩ {f | ↑f (i * i_1) ∈ i_4}
this : ∀ (x y : A), ↑f (x * y) = ↑f x * ↑f y
⊢ f ∈ Set.range toContinuousMap
refine'
  ⟨({ f with
        map_one' := of_not_not hf1
        map_mul' := this } :
      ContinuousMonoidHom A B),
    ContinuousMap.ext fun _ => rfl⟩