@@ -286,47 +286,24 @@ theorem embedding_toContinuousMap :
286
286
#align continuous_monoid_hom.embedding_to_continuous_map ContinuousMonoidHom.embedding_toContinuousMap
287
287
#align continuous_add_monoid_hom.embedding_to_continuous_map ContinuousAddMonoidHom.embedding_toContinuousMap
288
288
289
+ @[to_additive]
290
+ lemma range_toContinuousMap :
291
+ Set.range (toContinuousMap : ContinuousMonoidHom A B → C(A, B)) =
292
+ {f : C(A, B) | f 1 = 1 ∧ ∀ x y, f (x * y) = f x * f y} := by
293
+ refine Set.Subset.antisymm (Set.range_subset_iff.2 fun f ↦ ⟨map_one f, map_mul f⟩) ?_
294
+ rintro f ⟨h1, hmul⟩
295
+ exact ⟨{ f with map_one' := h1, map_mul' := hmul }, rfl⟩
296
+
289
297
@[to_additive]
290
298
theorem closedEmbedding_toContinuousMap [ContinuousMul B] [T2Space B] :
291
- ClosedEmbedding (toContinuousMap : ContinuousMonoidHom A B → C(A, B)) :=
292
- ⟨embedding_toContinuousMap A B,
293
- ⟨by
294
- suffices
295
- Set.range (toContinuousMap : ContinuousMonoidHom A B → C(A, B)) =
296
- ({ f | f '' {1 } ⊆ {1 }ᶜ } ∪
297
- ⋃ (x) (y) (U) (V) (W) (_ : IsOpen U) (_ : IsOpen V) (_ : IsOpen W) (_ :
298
- Disjoint (U * V) W),
299
- { f | f '' {x} ⊆ U } ∩ { f | f '' {y} ⊆ V } ∩ { f | f '' {x * y} ⊆ W } :
300
- Set C(A , B))ᶜ by
301
- rw [this, compl_compl]
302
- refine' (ContinuousMap.isOpen_gen isCompact_singleton isOpen_compl_singleton).union _
303
- repeat' apply isOpen_iUnion; intro
304
- repeat' apply IsOpen.inter
305
- all_goals apply ContinuousMap.isOpen_gen isCompact_singleton; assumption
306
- simp_rw [Set.compl_union, Set.compl_iUnion, Set.image_singleton, Set.singleton_subset_iff,
307
- Set.ext_iff, Set.mem_inter_iff, Set.mem_iInter, Set.mem_compl_iff]
308
- refine' fun f => ⟨_, _⟩
309
- · rintro ⟨f, rfl⟩
310
- exact
311
- ⟨fun h => h (map_one f), fun x y U V W _hU _hV _hW h ⟨⟨hfU, hfV⟩, hfW⟩ =>
312
- h.le_bot ⟨Set.mul_mem_mul hfU hfV, (congr_arg (· ∈ W) (map_mul f x y)).mp hfW⟩⟩
313
- · rintro ⟨hf1, hf2⟩
314
- suffices ∀ x y, f (x * y) = f x * f y by
315
- refine'
316
- ⟨({ f with
317
- map_one' := of_not_not hf1
318
- map_mul' := this } :
319
- ContinuousMonoidHom A B),
320
- ContinuousMap.ext fun _ => rfl⟩
321
- intro x y
322
- contrapose! hf2
323
- obtain ⟨UV, W, hUV, hW, hfUV, hfW, h⟩ := t2_separation hf2.symm
324
- have hB := @continuous_mul B _ _ _
325
- obtain ⟨U, V, hU, hV, hfU, hfV, h'⟩ :=
326
- isOpen_prod_iff.mp (hUV.preimage hB) (f x) (f y) hfUV
327
- refine' ⟨x, y, U, V, W, hU, hV, hW, h.mono_left _, ⟨hfU, hfV⟩, hfW⟩
328
- rintro _ ⟨x, y, hx : (x, y).1 ∈ U, hy : (x, y).2 ∈ V, rfl⟩
329
- exact h' ⟨hx, hy⟩⟩⟩
299
+ ClosedEmbedding (toContinuousMap : ContinuousMonoidHom A B → C(A, B)) where
300
+ toEmbedding := embedding_toContinuousMap A B
301
+ closed_range := by
302
+ simp only [range_toContinuousMap, Set.setOf_and, Set.setOf_forall]
303
+ refine .inter (isClosed_singleton.preimage (ContinuousMap.continuous_eval_const 1 )) <|
304
+ isClosed_iInter fun x ↦ isClosed_iInter fun y ↦ ?_
305
+ exact isClosed_eq (ContinuousMap.continuous_eval_const (x * y)) <|
306
+ .mul (ContinuousMap.continuous_eval_const x) (ContinuousMap.continuous_eval_const y)
330
307
#align continuous_monoid_hom.closed_embedding_to_continuous_map ContinuousMonoidHom.closedEmbedding_toContinuousMap
331
308
#align continuous_add_monoid_hom.closed_embedding_to_continuous_map ContinuousAddMonoidHom.closedEmbedding_toContinuousMap
332
309
0 commit comments