Skip to content

Commit 6e121ed

Browse files
Utility lemmas in filter.v (#2024)
* Utility lemmas in filter.v --------- Co-authored-by: Reynald Affeldt <reynald.affeldt@aist.go.jp>
1 parent 2c677ce commit 6e121ed

2 files changed

Lines changed: 51 additions & 7 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@
274274
- in `lebesgue_Rintegral.v`:
275275
+ lemma `Rdominated_cvg`
276276

277+
- in `filter.v`:
278+
+ lemmas `near_eq_cvg_eq`, `near_eq_is_cvg`, `near_eq_lim`,
279+
`cvg_to_withinP`, `within_cvg_to_within`
280+
277281
### Changed
278282

279283
- in `realsum.v`:

classical/filter.v

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -925,18 +925,36 @@ Lemma near_eq_cvg {T U} {F : set_system T} {FF : Filter F} (f g : T -> U) :
925925
{near F, f =1 g} -> g @ F `=>` f @ F.
926926
Proof. by move=> eq_fg P /=; apply: filterS2 eq_fg => x /= <-. Qed.
927927

928-
Lemma eq_cvg (T T' : Type) (F : set_system T) (f g : T -> T') (x : set_system T') :
928+
Lemma near_eq_cvg_eq {T U} {F : set_system T} {FF : Filter F} (f g : T -> U) :
929+
{near F, f =1 g} -> f @ F = g @ F.
930+
Proof.
931+
move=> fg; apply/seteqP; split; apply: near_eq_cvg => //.
932+
by near do symmetry.
933+
Unshelve. all: by end_near. Qed.
934+
935+
Lemma eq_cvg (T U : Type) (F : set_system T) (f g : T -> U) (x : set_system U) :
929936
f =1 g -> (f @ F --> x) = (g @ F --> x).
930937
Proof. by move=> /funext->. Qed.
931938

932-
Lemma eq_is_cvg_in (T T' : Type) (fT : pfilteredType T') (F : set_system T) (f g : T -> T') :
939+
Lemma near_eq_is_cvg (T : Type) (U : pnbhsType) (F : set_system T)
940+
(f g : T -> U) :
941+
Filter F -> {near F, f =1 g} -> cvg (f x @[x --> F]) -> cvg(g x @[x --> F]).
942+
Proof. by move=> FF /near_eq_cvg_eq ->. Qed.
943+
944+
Lemma eq_is_cvg_in (T U : Type) (fT : pfilteredType U) (F : set_system T)
945+
(f g : T -> U) :
933946
f =1 g -> [cvg (f @ F) in fT] = [cvg (g @ F) in fT].
934-
Proof. by move=> /funext->. Qed.
947+
Proof. by move=> /funext ->. Qed.
935948

936-
Lemma eq_is_cvg (T : Type) (T' : pnbhsType) (F : set_system T) (f g : T -> T') :
949+
Lemma eq_is_cvg (T : Type) (U : pnbhsType) (F : set_system T) (f g : T -> U) :
937950
f =1 g -> cvg (f @ F) = cvg (g @ F).
938951
Proof. by move=> /funext->. Qed.
939952

953+
Lemma near_eq_lim (T : Type) (U : pnbhsType) {F : set_system T} {FF : Filter F}
954+
(f g : T -> U) :
955+
{near F, f =1 g} -> lim (f @ F) = lim (g @ F).
956+
Proof. by move=> /near_eq_cvg_eq ->. Qed.
957+
940958
Lemma neari_eq_loc {T U} {F : set_system T} {FF : Filter F} (f g : T -> set U) :
941959
{near F, f =2 g} -> g `@ F `=>` f `@ F.
942960
Proof.
@@ -1197,11 +1215,23 @@ Qed.
11971215

11981216
End within.
11991217

1218+
Lemma cvg_to_withinP (T U : Type) {F : set_system T} {FF : Filter F}
1219+
{G : set_system U} {FG : Filter G} (f : T -> U) (A : set U) :
1220+
(f @ F --> within A G) <-> (f @ F --> G /\ \forall x \near F, A (f x)).
1221+
Proof.
1222+
split.
1223+
- move=> fFAG; split.
1224+
+ exact/(cvg_trans fFAG)/cvg_within.
1225+
+ by apply/fFAG; exact: withinT.
1226+
- move=> [+ fA] B => /[apply]; rewrite 2!nbhs_nearE !near_map.
1227+
by apply: filterS2 fA => t ?; exact.
1228+
Unshelve. all: by end_near. Qed.
1229+
12001230
Global Instance within_filter T D F : Filter F -> Filter (@within T D F).
12011231
Proof.
12021232
move=> FF; rewrite /within; constructor => /=.
1203-
- by apply: filterE.
1204-
- by move=> P Q/=; apply: filterS2 => x DP DQ Dx; split; [apply: DP|apply: DQ].
1233+
- exact: filterE.
1234+
- by move=> P Q/=; apply: filterS2 => x DP DQ Dx; split; [exact: DP|exact: DQ].
12051235
- by move=> P Q subPQ; apply: filterS => x DP /DP /subPQ.
12061236
Qed.
12071237

@@ -1210,8 +1240,18 @@ Qed.
12101240
Canonical within_filter_on T D (F : filter_on T) :=
12111241
FilterType (within D F) (within_filter _ _).
12121242

1243+
Lemma within_cvg_to_within {T U : Type} {F : set_system T} {FF : Filter F}
1244+
{G : set_system U} {FG : Filter G} (f : T -> U) (A : set T) (B : set U) :
1245+
(\forall x \near F, A x -> B (f x)) -> f @ F --> G ->
1246+
f @ within A F --> within B G.
1247+
Proof.
1248+
move=> near_hom fFG; apply/cvg_to_withinP; split.
1249+
- by apply: cvg_trans fFG; apply: cvg_app; exact: cvg_within.
1250+
- by rewrite near_withinE.
1251+
Qed.
1252+
12131253
Lemma filter_bigI_within T (I : choiceType) (D : {fset I}) (f : I -> set T)
1214-
(F : set_system T) (P : set T) :
1254+
(F : set_system T) (P : set T) :
12151255
Filter F -> (forall i, i \in D -> F [set j | P j -> f i j]) ->
12161256
F ([set j | P j -> (\bigcap_(i in [set` D]) f i) j]).
12171257
Proof. move=> FF FfD; exact: (@filter_bigI T I D f _ (within_filter P FF)). Qed.

0 commit comments

Comments
 (0)