@@ -3,9 +3,15 @@ import Munkres.Mathlib.Prelude
33
44open Set Filter Topology TopologicalSpace
55
6- variable {x : ℕ → ℝ}
6+ universe u
77
8- private def IsPeak (x : ℕ → ℝ) (n : ℕ) := ∀ m ≥ n, x m ≤ x n
8+ variable {α : Type u} [Preorder α]
9+ {x : ℕ → ℝ}
10+
11+ private def IsPeak₂ (x : ℕ → ℝ) (n : ℕ) : Prop := Minimal (· ∈ Set.range x) n
12+ noncomputable example : DecidablePred fun n ↦ IsPeak₂ x n := by
13+ exact Classical.decPred fun n ↦ IsPeak₂ x n
14+ private def IsPeak (x : ℕ → ℝ) (n : ℕ) : Prop := ∀ m ≥ n, x m ≤ x n
915
1016private lemma p' {n : ℕ} (h : ¬IsPeak x n) : ∃ m > n, x m > x n
1117 := by --
@@ -18,20 +24,88 @@ private lemma p' {n : ℕ} (h : ¬IsPeak x n) : ∃ m > n, x m > x n
1824 exact (lt_self_iff_false (x m)).mp hlt
1925 exact ⟨m, hmn.lt_of_ne' this, hlt⟩ -- ∎
2026
21- private structure Node (x : ℕ → ℝ) ( N : ℕ) where
27+ private structure Node (N : ℕ) where
2228 n : ℕ
2329 ge' : n ≥ N
2430
2531private noncomputable def ζ {x : ℕ → ℝ} {N : ℕ}
26- (h : ∀ n ≥ N, ∃ m > n, x m > x n) : ℕ → Node x N
32+ (h : ∀ n ≥ N, ∃ m > n, x m > x n) : ℕ → Node N
2733 | 0 => { n := N, ge' := le_rfl }
2834 | n + 1 => by
2935 let p := ζ h n
30- let m := (h p.n p.ge').choose
31- have hm := (h p.n p.ge').choose_spec.1
36+ have : DecidablePred fun m ↦ m > n ∧ x m > x n := by
37+ sorry
38+ let m := Nat.find <| h p.n p.ge'
39+ have hm := (Nat.find_spec (h p.n p.ge')).1
3240 exact { n := m, ge' := p.ge'.trans hm.le }
3341
34- noncomputable example {x : ℕ → ℝ}
42+ private structure Node₂ (x : ℕ → ℝ) where
43+ n : ℕ
44+ peak' : IsPeak x n
45+
46+
47+ private noncomputable def ψ {x : ℕ → ℝ}
48+ (h : ∀ N, ∃ n > N, IsPeak x n) : ℕ → Node₂ x
49+ | 0 => by
50+ specialize h 0
51+ exact { n := h.choose, peak' := h.choose_spec.2 }
52+ | n + 1 => by
53+ let p := ψ h n
54+ specialize h p.n
55+ exact { n := h.choose, peak' := h.choose_spec.2 }
56+
57+
58+ example {x : Fin 0 } : False := by
59+ have : x.val < 0 := x.prop
60+ exact Nat.not_succ_le_zero (↑x) this
61+
62+ private lemma l₁ {α : Type u} [Preorder α] [h₀ : Inhabited α] {A : Set α}
63+ (hA : A.Finite) : (upperBounds A).Nonempty := by
64+ have : Finite A := hA
65+ rw [finite_iff_exists_equiv_fin] at this
66+ obtain ⟨n, φ, ψ, h₁, h₂⟩ := this
67+ induction n with
68+ | zero =>
69+ use h₀.default
70+ intro x hx
71+ let φ : A ≃ Fin 0 := { toFun := φ, invFun := ψ, left_inv := h₁, right_inv := h₂ }
72+ let n := φ ⟨x, hx⟩
73+ refine False.elim <| Nat.not_succ_le_zero n n.prop
74+ | succ n ih =>
75+ sorry
76+ #print axioms l₁
77+
78+ private lemma mono {x : ℕ → α} (hPf : (Set.range x).Finite)
79+ : ∃ φ : ℕ → ℕ, StrictMono φ ∧ Monotone (x ∘ φ)
80+ := by
81+ let P := Set.range x
82+ -- have : P.Finite := hPf
83+ -- let P' := hPf.toFinset
84+ have : ∃ N, ∀ n ∈ P, n < N := by
85+ -- if hP : P = ∅ then
86+ -- sorry
87+ -- else
88+ sorry
89+ -- if hP₀ : P'.Nonempty then
90+ -- use P'.max' hP₀ + 1
91+ -- intro n hn
92+ -- rw [ <-hPf.mem_toFinset ] at hn
93+ -- -- rw [ Order.lt_add_one_iff ]
94+ -- -- exact P'.le_max' n hn
95+ -- sorry
96+ -- else
97+ -- have hP₀ : P = ∅ := by
98+ -- have : P' = ∅ := Finset.not_nonempty_iff_eq_empty.mp hP₀
99+ -- exact Finite.toFinset_eq_empty.mp this
100+ -- use 0
101+ -- intro n hn
102+ -- rw [ hP₀ ] at hn
103+ -- exact False.elim hn
104+ -- obtain ⟨N, hN⟩ := this
105+ sorry
106+ -- #print axioms mono
107+
108+ private lemma both {x : ℕ → ℝ}
35109 : ∃ φ : ℕ → ℕ, StrictMono φ ∧ (Monotone (x ∘ φ) ∨ Antitone (x ∘ φ))
36110 := by
37111 let P := { n | IsPeak x n }
@@ -66,23 +140,41 @@ noncomputable example {x : ℕ → ℝ}
66140 intro n
67141 let p := ζ hδ n
68142 specialize hδ (φ n) p.ge'
69- exact hδ.choose_spec .1
143+ exact (Nat.find_spec hδ) .1
70144 · refine monotone_nat_of_le_succ ?_
71145 intro n
72146 let p := ζ hδ n
73147 specialize hδ (φ n) p.ge'
74- exact hδ.choose_spec .2 .le
148+ exact (Nat.find_spec hδ) .2 .le
75149 else
76- have : ∀ N, ∃ n ≥ N, IsPeak x n := by
150+ have h : ∀ N, ∃ n > N, IsPeak x n := by
77151 intro N
78152 by_contra! h
79- have h : P ⊆ Finset.range N := by
153+ let R := Finset.range (N + 1 )
154+ have h : P ⊆ R := by
80155 rw [Finset.coe_range]
81156 intro n hnP
82157 by_contra! hn
83158 rw [notMem_Iio] at hn
84159 exact (h n hn) hnP
85- have : (SetLike.coe <| Finset.range N ).Finite := (Finset.range N) .finite_toSet
160+ have : (SetLike.coe R ).Finite := R .finite_toSet
86161 have : P.Finite := this.subset h
87162 exact hPf this
88- sorry
163+ let φ (n : ℕ) : ℕ := (ψ h n).n
164+ refine ⟨φ, ?_, Or.inr ?_⟩
165+ · refine strictMono_nat_of_lt_succ ?_
166+ intro n
167+ let p := ψ h n
168+ exact (h p.n).choose_spec.1
169+ · refine antitone_nat_of_succ_le ?_
170+ intro n
171+ let p := ψ h n
172+ simp only [Function.comp_apply]
173+ have hp : IsPeak x (φ n) := by
174+ match n with
175+ | 0 => exact (h 0 ).choose_spec.2
176+ | n + 1 => exact (h (ψ h n).n).choose_spec.2
177+ have : φ n < φ (n + 1 ) := (h p.n).choose_spec.1
178+ exact hp (φ (n + 1 )) this.le
179+
180+ -- #print axioms mono
0 commit comments