-
Notifications
You must be signed in to change notification settings - Fork 64
isolated points #1776
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
isolated points #1776
Conversation
|
The last commit adds a proof that there is a countable number of isolated points, this is need for a proof by @IshiguroYoshihiro |
|
It looks like the introduction of isolated points allowed for a strict improvement of the lemma |
| apply: dense_rat; last by apply: ball_open; rewrite divr_gt0. | ||
| by exists x; apply: ballxx; rewrite divr_gt0. | ||
| have [q /andP[rq qr]] : exists q, r / 4 < ratr q < r / 2. | ||
| have : ball (r / 3) (r / 12) `&` range ratr !=set0. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like these magic numbers. Looks like optimal choices.
| Lemma card_rat : [set: rat] #= [set: nat]. | ||
| Proof. exact/eq_card_nat/infinite_rat/countableP. Qed. | ||
|
|
||
| Lemma infinite_prod_rat : infinite_set [set: rat * rat]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
infinite_prod_rat and infinite_prod_nat can be unified by adding following lemmas:
Lemma finite_setX_or T T' (A : set T) (B : set T') :
finite_set (A `*` B) -> finite_set A \/ finite_set B.
Proof.
have [->|/set0P[a Aa]] := eqVneq A set0; first by left.
have: [set a] `*` B `<=` A `*` B by move=> x/= [] -> ?; split.
move/sub_finite_set/[apply]/(finite_image snd).
rewrite (_ : _ @` _ = B); first by right.
apply/seteqP; split=> b /=.
by case=> -[] /= ? ? [] ? ? <-.
by move=> ?; exists (a, b).
Qed.
Lemma infinite_setX {T} {A B : set T} :
infinite_set A -> infinite_set B -> infinite_set (A `*` B).
Proof.
by move=> iA iB; have /not_orP := conj iA iB; exact/contra_not/finite_setX_or.
Qed.
t6s
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, modulo the refactoring comment.
Motivation for this change
fixes #1775
define
isolatedpoints and properties and refine a lemma aboutclosure@IshiguroYoshihiro
Checklist
CHANGELOG_UNRELEASED.mdReference: How to document
Merge policy
As a rule of thumb:
all compile are preferentially merged into master.
Reminder to reviewers