Skip to content

Commit b26daf0

Browse files
author
pfaffelh
committed
improve
1 parent e092caf commit b26daf0

1 file changed

Lines changed: 276 additions & 3 deletions

File tree

Mathlib/Topology/Compactness/CompactSystem.lean

Lines changed: 276 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,287 @@ lemma l2 [Fintype α] (p : α → ℕ → Prop) (h : ∀ a, Finite { n | p a n }
320320
use a
321321
exact ha
322322

323+
lemma l2a [Fintype α] (q : α → ℕ → Prop) (h₁ : ∀ (n : ℕ), ∃ (K : α), q K n) :
324+
∃ (K : α), Infinite ((q K)⁻¹' {True}) := by
325+
by_contra! h
326+
simp only [preimage_singleton_true, not_infinite_iff_finite] at h
327+
have h' : Finite (⋃ K, { a | q K a }) := by
328+
apply Finite.Set.finite_iUnion fun i ↦ {a | q i a}
329+
have h₁' : ⋃ K, { a | q K a } = univ:= by
330+
rw [← Set.univ_subset_iff]
331+
intro n hn
332+
simp only [mem_iUnion, mem_setOf_eq]
333+
exact h₁ n
334+
rw [h₁'] at h'
335+
revert h'
336+
simp only [imp_false, not_finite_iff_infinite]
337+
exact infinite_coe_iff.mpr infinite_univ
338+
339+
340+
lemma l3 [Fintype α] (q : α → ℕ → Prop) (h₁ : ∀ (n : ℕ), ∃ (K : α), q K n)
341+
(h₂ : ∀ (K : α) (n : ℕ), (q K (n + 1) → q K n)) : ∃ (K : α), ∀ (n : ℕ), q K n := by
342+
have h₃ : ∃ (K : α), Infinite ((q K)⁻¹' {True}) := l2a q h₁
343+
obtain ⟨K, hK⟩ := h₃
344+
use K
345+
exact l1 (q K) (h₂ K) hK
346+
347+
example (K : ℕ → Set α) (s : Set α) : (∀ n, (K n) ∩ s = ∅) ↔ ⋃ n, (K n) ∩ s = ∅ := by
348+
exact Iff.symm iUnion_eq_empty
349+
350+
example (K : ℕ → Set α) (s : Set α) : ⋃ n, (K n) ∩ s = (⋃ n, (K n)) ∩ s := by
351+
exact Eq.symm (iUnion_inter s K)
352+
353+
example (s t : Set α) : t ⊆ s → s ∩ t = t := by
354+
exact inter_eq_self_of_subset_right
355+
356+
example (K : ℕ → Set α) (m : ℕ) : ∀ m, ⋂ n, K n ⊆ K m := by
357+
apply iInter_subset
358+
359+
example (n : ℕ) : 0 ≤ n := by exact Nat.zero_le n
360+
361+
example (K : ℕ → Set α) (n : ℕ) : ⋂ (k ≤ n), K k ⊆ K 0 := by
362+
refine biInter_subset_of_mem (Nat.zero_le n)
363+
364+
example (s : Set (Set α)) : ⋃ (x : s), x = ⋃₀ s := by
365+
exact Eq.symm sUnion_eq_iUnion
366+
367+
example (n : ℕ) (s : Set α) (K : ℕ → Set α) :
368+
s ∩ ⋂ k, ⋂ (_ : k ≤ n + 1 ), K n ⊆ s ∩ ⋂ k, ⋂ (_ : k ≤ n), K n := by
369+
refine inter_subset_inter_right s ?_
370+
apply antitone_dissipate (le_succ n)
371+
372+
example (s : Set α) : s = ∅ ↔ s ⊆ ∅ := by
373+
exact Iff.symm subset_empty_iff
374+
375+
example : 00 := by exact Nat.zero_le 0
376+
377+
example (s : ℕ → Set α) : ⋂ j, ⋂ (hj : j < 0), s j = univ := by
378+
exact iInter_eq_univ.mpr (fun i ↦ iInter_eq_univ.mpr (fun hi ↦ False.elim
379+
<| not_succ_le_zero i hi))
380+
381+
theorem main' (p : Set α → Prop) (hp : IsCompactSystem p) (L : ℕ → Finset (Set α))
382+
(hL : ∀ (n : ℕ) (d : Set α) (hd : d ∈ (L n).toSet), p d)
383+
(hc : ∀ (n : ℕ), ⋂ (k ≤ n), (⋃₀ (L k).toSet) ≠ ∅) :
384+
∃ (K : (j : ℕ) → (L j)), (∀ n N, ⋂ (j ≤ n), (K j) ∩ ⋂ (k ≤ N),
385+
⋃₀ (L (n + 1 + k)).toSet ≠ ∅) := by
386+
-- `q K n` is true, if `K ∩ ⋂ (k ≤ n), ⋃₀ (L k) ≠ ∅`
387+
let q : (L 0) → ℕ → Prop := fun (K : (L 0)) n ↦ (K : Set α) ∩ ⋂ (k ≤ n), (⋃₀ (L k).toSet) ≠ ∅
388+
389+
have hq (n : ℕ) : ∃ (K : (L 0)), q K n := by
390+
by_contra! h
391+
push_neg at h
392+
rw [← iUnion_eq_empty] at h
393+
have f : ⋃ (i : { x // x ∈ L 0 }), ↑i ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ ↑(L k) = (⋃ (i : { x // x ∈ L 0 }), ↑i) ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet := by
394+
rw [iUnion_inter]
395+
rw [f] at h
396+
have g : (⋃ (i : { x // x ∈ L 0 }), ↑i) ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet = ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet := by
397+
apply inter_eq_self_of_subset_right
398+
have f : ⋃ (i : { x // x ∈ (L 0) }), ↑i = ⋃₀ (L 0).toSet := by
399+
rw [sUnion_eq_iUnion]
400+
rfl
401+
rw [f]
402+
refine biInter_subset_of_mem (Nat.zero_le n)
403+
rw [g] at h
404+
apply (hc n) h
405+
have hq' (K : (L 0)) (n : ℕ) : q K (n + 1) → q K n := by
406+
intro c d
407+
apply c
408+
rw [← subset_empty_iff]
409+
apply le_trans _ d.le
410+
refine inter_subset_inter_right (K : Set α) ?_
411+
apply antitone_dissipate (le_succ n)
412+
obtain ⟨K, hK⟩ := l3 q hq hq'
413+
414+
415+
let q' (n : ℕ) (K : ((j : ℕ) → (hj : j ≤ n) → (L j))) (N : ℕ) : Prop := ⋂ (j : ℕ) (hj : j ≤ n), ((K j hj) : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + 1 + k)).toSet) ≠ ∅
416+
let a : (j : ℕ) → j < 0 → { x // x ∈ L j } := fun j hj ↦ False.elim <| not_succ_le_zero j hj
417+
have h'q (n : ℕ) (N : ℕ) : ∃ (K : (j : ℕ) → (hj : j ≤ 0) → (L j)), q' 0 K N := by
418+
simp_rw [q']
419+
have d (j : ℕ) : j ≤ 0 → j = 0 := by exact fun a ↦ eq_zero_of_le_zero a
420+
use fun (j : ℕ) (hj : j ≤ 0) ↦ (eq_zero_of_le_zero hj) ▸ K
421+
have h₃ : ⋂ j, ⋂ (hj : j ≤ 0), ↑((fun j hj ↦ ((eq_zero_of_le_zero hj) ▸ K) j hj) : Set α) = (K : Set α) := by sorry
422+
apply?
423+
424+
425+
426+
427+
sorry
428+
429+
430+
431+
432+
-- `q' n K N` is true, if `⋂ (j ≤ n), (K j) ∩ ⋂ (k ≤ N), ⋃₀ (L (n + 1 + k)) ≠ ∅`
433+
let q' : (n : ℕ) → ((j : ℕ) → (L j)) → ℕ → Prop :=
434+
fun n K N ↦ ⋂ (j : ℕ) (hj : j ≤ n), (K j : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + 1 + k)).toSet) ≠ ∅
435+
436+
let K : (j : ℕ) → (L j) := match j with
437+
| zero := by sorry
438+
439+
440+
441+
442+
443+
444+
have h_main : ∃ (K : ((j : ℕ) → (L j))), ∀ (n N : ℕ), q' n K N := by sorry
445+
obtain ⟨K, hK⟩ := h_main
446+
use K
447+
448+
449+
450+
451+
have hq (n : ℕ) : ∃ (K : (L 0)), q K n := by
452+
by_contra! h
453+
push_neg at h
454+
rw [← iUnion_eq_empty] at h
455+
have f : ⋃ (i : { x // x ∈ L 0 }), ↑i ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ ↑(L k) = (⋃ (i : { x // x ∈ L 0 }), ↑i) ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet := by
456+
rw [iUnion_inter]
457+
rw [f] at h
458+
have g : (⋃ (i : { x // x ∈ L 0 }), ↑i) ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet = ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet := by
459+
apply inter_eq_self_of_subset_right
460+
have f : ⋃ (i : { x // x ∈ (L 0) }), ↑i = ⋃₀ (L 0).toSet := by
461+
rw [sUnion_eq_iUnion]
462+
rfl
463+
rw [f]
464+
refine biInter_subset_of_mem (Nat.zero_le n)
465+
rw [g] at h
466+
apply (hc n) h
467+
have hq' (K : (L 0)) (n : ℕ) : q K (n + 1) → q K n := by
468+
intro c d
469+
apply c
470+
rw [← subset_empty_iff]
471+
apply le_trans _ d.le
472+
refine inter_subset_inter_right (K : Set α) ?_
473+
apply antitone_dissipate (le_succ n)
474+
have hK : ∃ (K : (L 0)), ∀ n, q K n := by
475+
exact l3 q hq hq'
476+
477+
let q' : (n : ℕ) → ((j : ℕ) → (hj : j ≤ n) → (L j)) → ℕ → Prop :=
478+
fun n K N ↦ ⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + k + 1)).toSet) ≠ ∅
479+
have hq'' : q' = fun n K N ↦ ⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N),
480+
(⋃₀ (L (n + k + 1)).toSet) ≠ ∅ := by
481+
rfl
482+
have hq' (n : ℕ) (K : ((j : ℕ) → (hj : j ≤ n) → (L j))) (N : ℕ) : (q' n K N) ↔
483+
(⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + k + 1)).toSet) ≠ ∅) := by
484+
rfl
485+
486+
487+
488+
sorry
489+
have h'' (K : L 0) := Finite.exists_infinite_fiber (fun n ↦ q K n)
490+
have h''' : ∃ (K : L 0), Infinite ((fun n ↦ q K n) ⁻¹' {True}) := by
491+
by_contra! h
492+
simp only [preimage_singleton_true, coe_setOf, not_infinite_iff_finite, Subtype.forall] at h
493+
494+
495+
496+
497+
simp_rw [← hq']
498+
499+
have h₀ (n : ℕ) : ∃ (K : ((j : ℕ) → (hj : j ≤ n) → (L j))), ∀ N, q' N (fun j hj ↦ K j) k := by sorry
500+
501+
502+
503+
sorry
504+
505+
506+
507+
508+
509+
sorry
510+
511+
rfl
512+
513+
514+
515+
have hq (K : (L 0)) (n : ℕ) : q K n := by
516+
specialize hc 0
517+
simp? at hc
518+
sorry
519+
have h'' (K : L 0) := Finite.exists_infinite_fiber (fun n ↦ q K n)
520+
have h''' : ∃ (K : L 0), Infinite ((fun n ↦ q K n) ⁻¹' {True}) := by
521+
by_contra! h
522+
simp only [preimage_singleton_true, coe_setOf, not_infinite_iff_finite, Subtype.forall] at h
523+
524+
525+
526+
-- apply hc 0
527+
simp only [nonpos_iff_eq_zero, iInter_iInter_eq_left, sUnion_eq_empty, Finset.mem_coe]
528+
529+
sorry
530+
531+
have h : ∃ (K : L 0), ∀ n, q K n:= by
532+
by_contra h'
533+
push_neg at h'
534+
535+
sorry
536+
537+
simp_rw [q] at h'
538+
-- Finite.exists_infinite_fiber
539+
sorry
540+
sorry
323541
theorem main (p : Set α → Prop) (hp : IsCompactSystem p) (L : ℕ → Finset (Set α))
324542
(hL : ∀ (n : ℕ) (d : Set α) (hd : d ∈ (L n).toSet), p d)
325543
(hc : ∀ (n : ℕ), ⋂ (k ≤ n), (⋃₀ (L k).toSet) ≠ ∅) :
326-
∃ (K : (n : ℕ) → (L n)), (∀ N k, ⋂ (j : ℕ) (hj : j ≤ N), (K j) ∩ ⋂ (j ≤ k), ⋃₀ (L (N + j + 1)).toSet ≠ ∅) := by
544+
∃ (K : (n : ℕ) → (L n)), (∀ N k, ⋂ (j : ℕ) (hj : j ≤ N), (K j) ∩ ⋂ (j ≤ k),
545+
⋃₀ (L (N + j + 1)).toSet ≠ ∅) := by
327546
-- `q K n` is true, if `K ∩ ⋂ (k ≤ n), ⋃₀ (L k) ≠ ∅`
328-
let (q : (L 0) → ℕ → Prop) := fun (K : (L 0)) n ↦ (K : Set α) ∩ ⋂ (k ≤ n), (⋃₀ (L k).toSet) ≠ ∅
547+
let q : (L 0) → ℕ → Prop := fun (K : (L 0)) n ↦ (K : Set α) ∩ ⋂ (k ≤ n), (⋃₀ (L k).toSet) ≠ ∅
548+
549+
have hq (n : ℕ) : ∃ (K : (L 0)), q K n := by
550+
by_contra! h
551+
push_neg at h
552+
rw [← iUnion_eq_empty] at h
553+
have f : ⋃ (i : { x // x ∈ L 0 }), ↑i ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ ↑(L k) = (⋃ (i : { x // x ∈ L 0 }), ↑i) ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet := by
554+
rw [iUnion_inter]
555+
rw [f] at h
556+
have g : (⋃ (i : { x // x ∈ L 0 }), ↑i) ∩ ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet = ⋂ k, ⋂ (_ : k ≤ n), ⋃₀ (L k).toSet := by
557+
apply inter_eq_self_of_subset_right
558+
have f : ⋃ (i : { x // x ∈ (L 0) }), ↑i = ⋃₀ (L 0).toSet := by
559+
rw [biUnion_eq_iUnion]
560+
simp only [Finset.coe_sort_coe]
561+
sorry
562+
rw [f]
563+
refine biInter_subset_of_mem (Nat.zero_le n)
564+
rw [g] at h
565+
apply (hc n) h
566+
567+
568+
sorry
569+
570+
571+
sorry
572+
have h'' (K : L 0) := Finite.exists_infinite_fiber (fun n ↦ q K n)
573+
have h''' : ∃ (K : L 0), Infinite ((fun n ↦ q K n) ⁻¹' {True}) := by
574+
by_contra! h
575+
simp only [preimage_singleton_true, coe_setOf, not_infinite_iff_finite, Subtype.forall] at h
576+
577+
578+
579+
580+
let q' : (n : ℕ) → ((j : ℕ) → (hj : j ≤ n) → (L j)) → ℕ → Prop :=
581+
fun n K N ↦ ⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + k + 1)).toSet) ≠ ∅
582+
have hq'' : q' = fun n K N ↦ ⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N),
583+
(⋃₀ (L (n + k + 1)).toSet) ≠ ∅ := by
584+
rfl
585+
have hq' (n : ℕ) (K : ((j : ℕ) → (hj : j ≤ n) → (L j))) (N : ℕ) : (q' n K N) ↔
586+
(⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + k + 1)).toSet) ≠ ∅) := by
587+
rfl
588+
simp_rw [← hq']
589+
590+
have h₀ (n : ℕ) : ∃ (K : ((j : ℕ) → (hj : j ≤ n) → (L j))), ∀ N, q' N (fun j hj ↦ K j) k := by sorry
591+
592+
593+
594+
sorry
595+
596+
597+
598+
599+
600+
sorry
601+
602+
rfl
329603

330-
let (q' : (n : ℕ) → ((j : ℕ) → (hj : j ≤ n) → (L j)) → ℕ → Prop) := fun n K (N : ℕ) ↦ ⋂ (j : ℕ) (hj : j ≤ n), (K j hj : Set α) ∩ ⋂ (k ≤ N), (⋃₀ (L (n + k)).toSet) ≠ ∅
331604

332605

333606
have hq (K : (L 0)) (n : ℕ) : q K n := by

0 commit comments

Comments
 (0)