Skip to content

Commit 6161f0b

Browse files
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 e512267 commit 6161f0b

File tree

6 files changed

+224
-73
lines changed

6 files changed

+224
-73
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
@@ -676,6 +676,14 @@ split=> [[x Px NQx] /(_ x Px)//|]; apply: contra_notP => + x Px.
676676
by apply: contra_notP => NQx; exists x.
677677
Qed.
678678

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

classical/classical_sets.v

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

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

theories/normedtype.v

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3940,26 +3940,26 @@ Qed.
39403940
Lemma nbhs_open_ereal_lt r (f : R -> R) : r < f r ->
39413941
nbhs r%:E [set y | y < (f r)%:E]%E.
39423942
Proof.
3943-
move=> xfx; rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3943+
move=> xfx; rewrite nbhsE /=; eexists; last by move=> y; exact.
39443944
by split; [apply open_ereal_lt_ereal | rewrite /= lte_fin].
39453945
Qed.
39463946

39473947
Lemma nbhs_open_ereal_gt r (f : R -> R) : f r < r ->
39483948
nbhs r%:E [set y | (f r)%:E < y]%E.
39493949
Proof.
3950-
move=> xfx; rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3950+
move=> xfx; rewrite nbhsE /=; eexists; last by move=> y; exact.
39513951
by split; [apply open_ereal_gt_ereal | rewrite /= lte_fin].
39523952
Qed.
39533953

39543954
Lemma nbhs_open_ereal_pinfty r : (nbhs +oo [set y | r%:E < y])%E.
39553955
Proof.
3956-
rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3956+
rewrite nbhsE /=; eexists; last by move=> y; exact.
39573957
by split; [apply open_ereal_gt_ereal | rewrite /= ltry].
39583958
Qed.
39593959

39603960
Lemma nbhs_open_ereal_ninfty r : (nbhs -oo [set y | y < r%:E])%E.
39613961
Proof.
3962-
rewrite nbhsE /=; eexists; split; last by move=> y; exact.
3962+
rewrite nbhsE /=; eexists; last by move=> y; exact.
39633963
by split; [apply open_ereal_lt_ereal | rewrite /= ltNyr].
39643964
Qed.
39653965

@@ -4290,7 +4290,7 @@ move=> oU; have [->|U0] := eqVneq U set0.
42904290
apply/seteqP; split=> [x Ux|x [p _ Ipx]]; last exact: bigcup_ointsub_sub Ipx.
42914291
suff [q Iqx] : exists q, bigcup_ointsub U q x.
42924292
by exists q => //=; rewrite in_setE; case: Iqx => A [[_ _ +] ? _]; exact.
4293-
have : nbhs x U by rewrite nbhsE /=; exists U; split => //.
4293+
have : nbhs x U by rewrite nbhsE /=; exists U.
42944294
rewrite -nbhs_ballE /nbhs_ball /nbhs_ball_ => -[_/posnumP[r] xrU].
42954295
have /rat_in_itvoo[q qxxr] : (x - r%:num < x + r%:num)%R.
42964296
by rewrite ltr_subl_addr -addrA ltr_addl.
@@ -4804,7 +4804,7 @@ move=> C D FC f_D; have {}f_D :
48044804
have exPj : forall j, exists Bj, open_nbhs (f j) Bj /\ Bj `<=` E ord0 j.
48054805
move=> j; have := f_E ord0 j; rewrite nbhsE => - [Bj].
48064806
by rewrite row_simpl'; exists Bj.
4807-
exists [set g | forall j, (get (Pj j)) (g j)]; split; last first.
4807+
exists [set g | forall j, (get (Pj j)) (g j)]; last first.
48084808
move=> g Pg; apply: sED => i j; rewrite ord1 row_simpl'.
48094809
by have /getPex [_ /(_ _ (Pg j))] := exPj j.
48104810
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
@@ -1282,8 +1282,7 @@ Lemma cvg_nseries_near (u : nat^nat) : cvg (nseries u) ->
12821282
\forall n \near \oo, u n = 0%N.
12831283
Proof.
12841284
move=> /cvg_ex[l ul]; have /ul[a _ aul] : nbhs l [set l].
1285-
exists [set l]; split; last by split.
1286-
by exists [set l] => //; rewrite bigcup_set1.
1285+
by exists [set l]; split=> //; exists [set l] => //; rewrite bigcup_set1.
12871286
have /ul[b _ bul] : nbhs l [set l.-1; l].
12881287
by exists [set l]; split => //; exists [set l] => //; rewrite bigcup_set1.
12891288
exists (maxn a b) => // n /= abn.

0 commit comments

Comments
 (0)