@@ -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 : 0 ≤ 0 := 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
323541theorem 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