@@ -412,21 +412,6 @@ apply/idP/idP=> [/card_leP[f]|?];
412412by have /leq_card := in2TT 'inj_(IIord \o f \o IIord^-1); rewrite !card_ord.
413413Qed .
414414
415- Lemma injectiveT_ltn (A : set nat) (f : {injfun [set: nat] >-> A}) (n : nat) :
416- exists m, (n < f m)%N.
417- Proof .
418- elim: n => [|n [m ih]].
419- apply/not_existsP => f_le0.
420- have /(_ 0 1 (in_setT _) (in_setT _)) : set_inj setT f by [].
421- have /negP := f_le0 0; rewrite -leqNgt leqn0 => /eqP ->.
422- have /negP := f_le0 1; rewrite -leqNgt leqn0 => /eqP ->.
423- by move=> /(_ erefl)/esym; exact/eqP/oner_neq0.
424- apply/not_existsP => f_leS.
425- have {}f_leS x : (f x <= n.+1)%N by rewrite leqNgt; exact/negP/f_leS.
426- have /subset_card_le : f @` `I_n.+3 `<=` `I_n.+2.
427- by move=> /= _ [y] yn3 <-; rewrite ltnS f_leS.
428- by rewrite (card_ge_image f)// card_le_II ltnn.
429- Qed .
430415
431416Lemma ocard_eqP {T U} {A : set T} {B : set U} :
432417 reflect $|{bij A >-> some @` B}| (A #= B).
568553Lemma finite_set_countable T (A : set T) : finite_set A -> countable A.
569554Proof . by move=> /finite_setP[n /eq_countable->]. Qed .
570555
571-
572556Lemma infiniteP T (A : set T) : infinite_set A <-> [set: nat] #<= A.
573557Proof .
574558elim/Ppointed: T => T in A *.
@@ -875,6 +859,10 @@ have Gy : y \in G k by rewrite in_fset_set ?inE//; apply: Ffin.
875859by exists (Tagged G [` Gy]%fset).
876860Qed .
877861
862+ Lemma infinite_setC {T} (A : set T) : infinite_set [set: T] ->
863+ finite_set (~` A) -> infinite_set A.
864+ Proof . by move=> + ACfin Afin; apply; rewrite -(setvU A) finite_setU. Qed .
865+
878866Lemma trivIset_sum_card (T : choiceType) (F : nat -> set T) n :
879867 (forall n, finite_set (F n)) -> trivIset [set: nat] F ->
880868 (\sum_(i < n) #|` fset_set (F i)| =
@@ -1143,6 +1131,13 @@ Proof. by rewrite -setXTT; apply: infinite_setX; exact: infinite_nat. Qed.
11431131Lemma card_nat2 : [set: nat * nat] #= [set: nat].
11441132Proof . exact/eq_card_nat/infinite_prod_nat/countableP. Qed .
11451133
1134+ Lemma injective_gtn (f : nat -> nat) : injective f -> forall (n : nat), exists m, (n < f m)%N.
1135+ Proof .
1136+ move=> fI n; suff [m /negP] : ~` (f @^-1` `I_n.+1) !=set0 by rewrite -ltnNge; exists m.
1137+ apply: infinite_setN0; apply: infinite_setC; first exact: infinite_nat.
1138+ by rewrite setCK; apply: finite_preimage; first by move=> ? ? ? ?; apply: fI.
1139+ Qed .
1140+
11461141HB.instance Definition _ := isPointed.Build rat 0.
11471142
11481143Lemma infinite_rat : infinite_set [set: rat].
0 commit comments