@@ -500,46 +500,48 @@ HB.end.
500500(** Topology defined by a base of open sets *)
501501
502502HB.factory Record isBaseTopological T & Choice T := {
503- I : pointedType;
504- D : set I;
505- b : I -> ( set T) ;
506- b_cover : \bigcup_(i in D) b i = setT;
503+ I : pointedType ;
504+ D : set I ;
505+ b : I -> set T ;
506+ b_cover : \bigcup_(i in D) b i = setT ;
507507 b_join : forall i j t, D i -> D j -> b i t -> b j t ->
508- exists k, [/\ D k, b k t & b k `<=` b i `&` b j];
508+ exists k, [/\ D k, b k t & b k `<=` b i `&` b j]
509509}.
510510
511+ Definition openU_from T I (D : set I) (b : I -> set T) :=
512+ [set \bigcup_(i in D') b i | D' in subset^~ D].
513+
511514HB.builders Context T & isBaseTopological T.
512515
513- Definition open_from := [set \bigcup_(i in D') b i | D' in subset^~ D] .
516+ Local Notation openU_from := (openU_from D b) .
514517
515- Let open_fromT : open_from setT.
518+ Let openU_fromT : openU_from setT.
516519Proof . exists D => //; exact: b_cover. Qed .
517520
518- Let open_fromI (A B : set T) : open_from A -> open_from B ->
519- open_from (A `&` B).
521+ Let openU_fromI : setI_closed openU_from.
520522Proof .
521- move=> [DA sDAD AeUbA] [DB sDBD BeUbB].
522- have ABU : forall t, (A `&` B) t ->
523- exists it, D it /\ b it t /\ b it `<=` A `&` B.
524- move=> t [At Bt].
525- have [iA [DiA [ biAt sbiA]]] : exists i, D i /\ b i t /\ b i `<=` A.
523+ move=> A B [DA sDAD AeUbA] [DB sDBD BeUbB].
524+ have ABU t : (A `&` B) t ->
525+ exists it, [/\ D it, b it t & b it `<=` A `&` B] .
526+ move=> [At Bt].
527+ have [iA [DiA biAt sbiA]] : exists i, [/\ D i, b i t & b i `<=` A] .
526528 move: At; rewrite -AeUbA => - [i DAi bit]; exists i.
527- by split; [apply: sDAD|split => // ?; exists i ].
528- have [iB [DiB [ biBt sbiB]]] : exists i, D i /\ b i t /\ b i `<=` B.
529+ by split => //; [exact: sDAD|exact: bigcup_sup ].
530+ have [iB [DiB biBt sbiB]] : exists i, [/\ D i, b i t & b i `<=` B] .
529531 move: Bt; rewrite -BeUbB => - [i DBi bit]; exists i.
530- by split; [apply: sDBD|split => // ?; exists i ].
532+ by split=> //; [exact: sDBD|exact: bigcup_sup ].
531533 have [i [Di bit sbiAB]] := b_join DiA DiB biAt biBt.
532- by exists i; split=> //; split=> // s /sbiAB [/sbiA ? /sbiB].
533- set Dt := fun t => [set it | D it /\ b it t /\ b it `<=` A `&` B].
534+ by exists i; split=> // s /sbiAB [/sbiA ? /sbiB].
535+ set Dt := fun t => [set it | [/\ D it, b it t & b it `<=` A `&` B] ].
534536exists [set get (Dt t) | t in A `&` B].
535537 by move=> _ [t ABt <-]; have /ABU/getPex [] := ABt.
536538rewrite predeqE => t; split=> [[_ [s ABs <-] bDtst]|ABt].
537- by have /ABU/getPex [_ [_]] := ABs; apply .
538- by exists (get (Dt t)); [exists t| have /ABU/getPex [? [] ]:= ABt].
539+ by have /ABU/getPex [_ _] := ABs; exact .
540+ by exists (get (Dt t)); [exists t| have /ABU/getPex [?]:= ABt].
539541Qed .
540542
541- Let open_from_bigU (I0 : Type ) (f : I0 -> set T) :
542- (forall i, open_from (f i)) -> open_from (\bigcup_i f i).
543+ Let openU_from_bigU (I0 : Type ) (f : I0 -> set T) :
544+ (forall i, openU_from (f i)) -> openU_from (\bigcup_i f i).
543545Proof .
544546set fop := fun j => [set Dj | Dj `<=` D /\ f j = \bigcup_(i in Dj) b i].
545547exists (\bigcup_j get (fop j)).
@@ -554,19 +556,22 @@ by move=> [i]; exists i => //; exists j.
554556Qed .
555557
556558HB.instance Definition _ := isOpenTopological.Build T
557- open_fromT open_fromI open_from_bigU .
559+ openU_fromT openU_fromI openU_from_bigU .
558560
559561HB.end .
560562
563+ #[deprecated(since="mathcomp-analysis 1.17.0", use=openU_from)]
564+ Notation open_from := openU_from (only parsing).
565+
561566HB.factory Record isSubBaseTopological T & Choice T := {
562- I : pointedType;
563- D : set I;
564- b : I -> ( set T);
567+ I : pointedType ;
568+ D : set I ;
569+ b : I -> set T
565570}.
566571
567572HB.builders Context T & isSubBaseTopological T.
568573
569- Local Notation finI_from := (finI_from D b).
574+ Local Notation finI_from := (open_finI_from D b).
570575
571576Let finI_from_cover : \bigcup_(A in finI_from) A = setT.
572577Proof .
@@ -829,25 +834,29 @@ Qed.
829834Lemma closedU (T : topologicalType) : setU_closed (@closed T).
830835Proof . by move=> E D; rewrite -?openC setCU; exact: openI. Qed .
831836
832- Lemma closed_bigsetU ( T : topologicalType) ( I : eqType) (s : seq I)
837+ Lemma bigsetU_closed { T : topologicalType} { I : eqType} (s : seq I)
833838 (F : I -> set T) : (forall x, x \in s -> closed (F x)) ->
834839 closed (\big[setU/set0]_(x <- s) F x).
835840Proof .
836841move=> scF; rewrite big_seq.
837842by elim/big_ind : _ => //; [exact: closed0|exact: closedU].
838843Qed .
844+ #[deprecated(since="mathcomp-analysis 1.17.0", use=bigsetU_closed)]
845+ Notation closed_bigsetU := bigsetU_closed (only parsing).
839846
840- Lemma closed_bigcup ( T : topologicalType) ( I : choiceType) (A : set I)
847+ Lemma bigcup_closed { T : topologicalType} { I : choiceType} (A : set I)
841848 (F : I -> set T) :
842849 finite_set A -> (forall i, A i -> closed (F i)) ->
843850 closed (\bigcup_(i in A) F i).
844851Proof .
845- move=> finA cF; rewrite -bigsetU_fset_set//; apply: closed_bigsetU => i.
852+ move=> finA cF; rewrite -bigsetU_fset_set//; apply: bigsetU_closed => i.
846853by rewrite in_fset_set// inE; exact: cF.
847854Qed .
855+ #[deprecated(since="mathcomp-analysis 1.17.0", use=bigcup_closed)]
856+ Notation closed_bigcup := bigcup_closed (only parsing).
848857
849858Section closure_lemmas.
850- Variable T : topologicalType.
859+ Context { T : topologicalType} .
851860Implicit Types E A B U : set T.
852861
853862Lemma closureS A B : A `<=` B -> closure A `<=` closure B.
0 commit comments