Skip to content

Commit f603a95

Browse files
zstone1affeldt-aist
authored andcommitted
Product embedding (#768)
* swapping machines * proof of open map * hausdorff accessible * weak products equivalent * changelog * strengthen join_product_weak * cleaning up proofs * typos * adding local notations for proof legibility * merging product stuff * fixing changelog * specialized conjunctions to use less brackets and splits * fixing grammar * fix changelog * fixing build * more build fixes --------- Co-authored-by: Reynald Affeldt <[email protected]>
1 parent 3b594c9 commit f603a95

File tree

6 files changed

+225
-76
lines changed

6 files changed

+225
-76
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,17 @@
6969
+ new lemmas `pi_continuous`, `quotient_continuous`, and
7070
`repr_comp_continuous`.
7171

72+
- in file `boolp.v`,
73+
+ new lemma `forallp_asboolPn2`.
74+
- in file `classical_sets.v`,
75+
+ new lemma `preimage_range`.
76+
- in file `topology.v`,
77+
+ new definitions `hausdorff_accessible`, `separate_points_from_closed`, and
78+
`join_product`.
79+
+ new lemmas `weak_sep_cvg`, `weak_sep_nbhsE`, `weak_sep_openE`,
80+
`join_product_continuous`, `join_product_open`, `join_product_inj`, and
81+
`join_product_weak`.
82+
7283
### Changed
7384

7485
- in `fsbigop.v`:

classical/boolp.v

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,14 @@ split=> [[x Px NQx] /(_ x Px)//|]; apply: contra_notP => + x Px.
674674
by apply: contra_notP => NQx; exists x.
675675
Qed.
676676

677+
Lemma forallp_asboolPn2 {T} {P Q : T -> Prop} :
678+
reflect (forall x : T, ~ P x \/ ~ Q x) (~~ `[<exists2 x : T, P x & Q x>]).
679+
Proof.
680+
apply: (iffP idP)=> [/asboolPn NP x|NP].
681+
by move/forallPNP : NP => /(_ x)/and_rec/not_andP.
682+
by apply/asboolP=> -[x Px Qx]; have /not_andP := NP x; exact.
683+
Qed.
684+
677685
Module FunOrder.
678686
Section FunOrder.
679687
Import Order.TTheory.

classical/classical_sets.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,9 @@ Proof. by case=> [t ?]; exists (f t). Qed.
12781278
Lemma preimage_image f A : A `<=` f @^-1` (f @` A).
12791279
Proof. by move=> a Aa; exists a. Qed.
12801280

1281+
Lemma preimage_range {A B : Type} (f : A -> B) : f @^-1` (range f) = [set: A].
1282+
Proof. by rewrite eqEsubset; split=> x // _; exists x. Qed.
1283+
12811284
Lemma image_preimage_subset f Y : f @` (f @^-1` Y) `<=` Y.
12821285
Proof. by move=> _ [t /= Yft <-]. Qed.
12831286

theories/normedtype.v

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3022,26 +3022,26 @@ Qed.
30223022
Lemma nbhs_open_ereal_lt r (f : R -> R) : r < f r ->
30233023
nbhs r%:E [set y | y < (f r)%:E]%E.
30243024
Proof.
3025-
move=> xfx; rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3025+
move=> xfx; rewrite nbhsE /=; eexists; last by move=> y; exact.
30263026
by split; [apply open_ereal_lt_ereal | rewrite /= lte_fin].
30273027
Qed.
30283028

30293029
Lemma nbhs_open_ereal_gt r (f : R -> R) : f r < r ->
30303030
nbhs r%:E [set y | (f r)%:E < y]%E.
30313031
Proof.
3032-
move=> xfx; rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3032+
move=> xfx; rewrite nbhsE /=; eexists; last by move=> y; exact.
30333033
by split; [apply open_ereal_gt_ereal | rewrite /= lte_fin].
30343034
Qed.
30353035

30363036
Lemma nbhs_open_ereal_pinfty r : (nbhs +oo [set y | r%:E < y])%E.
30373037
Proof.
3038-
rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3038+
rewrite nbhsE /=; eexists; last by move=> y; exact.
30393039
by split; [apply open_ereal_gt_ereal | rewrite /= ltry].
30403040
Qed.
30413041

30423042
Lemma nbhs_open_ereal_ninfty r : (nbhs -oo [set y | y < r%:E])%E.
30433043
Proof.
3044-
rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3044+
rewrite nbhsE /=; eexists; last by move=> y; exact.
30453045
by split; [apply open_ereal_lt_ereal | rewrite /= ltNyr].
30463046
Qed.
30473047

@@ -3372,7 +3372,7 @@ move=> oU; have [->|U0] := eqVneq U set0.
33723372
apply/seteqP; split=> [x Ux|x [p _ Ipx]]; last exact: bigcup_ointsub_sub Ipx.
33733373
suff [q Iqx] : exists q, bigcup_ointsub U q x.
33743374
by exists q => //=; rewrite in_setE; case: Iqx => A [[_ _ +] ? _]; exact.
3375-
have : nbhs x U by rewrite nbhsE /=; exists U; split => //.
3375+
have : nbhs x U by rewrite nbhsE /=; exists U.
33763376
rewrite -nbhs_ballE /nbhs_ball /nbhs_ball_ => -[_/posnumP[r] xrU].
33773377
have /rat_in_itvoo[q qxxr] : (x - r%:num < x + r%:num)%R.
33783378
by rewrite ltr_subl_addr -addrA ltr_addl.
@@ -3886,7 +3886,7 @@ move=> C D FC f_D; have {}f_D :
38863886
have exPj : forall j, exists Bj, open_nbhs (f j) Bj /\ Bj `<=` E ord0 j.
38873887
move=> j; have := f_E ord0 j; rewrite nbhsE => - [Bj].
38883888
by rewrite row_simpl'; exists Bj.
3889-
exists [set g | forall j, (get (Pj j)) (g j)]; split; last first.
3889+
exists [set g | forall j, (get (Pj j)) (g j)]; last first.
38903890
move=> g Pg; apply: sED => i j; rewrite ord1 row_simpl'.
38913891
by have /getPex [_ /(_ _ (Pg j))] := exPj j.
38923892
split; last by move=> j; have /getPex [[]] := exPj j.

theories/sequences.v

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,8 +1294,7 @@ Lemma cvg_nseries_near (u : nat^nat) : cvgn (nseries u) ->
12941294
\forall n \near \oo, u n = 0%N.
12951295
Proof.
12961296
move=> /cvg_ex[l ul]; have /ul[a _ aul] : nbhs l [set l].
1297-
exists [set l]; split; last by split.
1298-
by exists [set l] => //; rewrite bigcup_set1.
1297+
by exists [set l]; split=> //; exists [set l] => //; rewrite bigcup_set1.
12991298
have /ul[b _ bul] : nbhs l [set l.-1; l].
13001299
by exists [set l]; split => //; exists [set l] => //; rewrite bigcup_set1.
13011300
exists (maxn a b) => // n /= abn.

0 commit comments

Comments
 (0)