/-
Copyright 2026 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
import FormalConjecturesUtilCollatz step differences
Differences in adjacent elements of the sequence quantifying the steps needed for $n$ to converge to 1 in the Collatz Conjecture. $$a(n) = \mathrm{A006577}(n+1) - \mathrm{A006577}(n)$$ for $n > 0$.
References:
namespace OeisA153330Single step of the Collatz mapping.
def collatzStep (n : ℕ) : ℕ :=
if n % 2 = 0 then n / 2 else 3 * n + 1open Classical in
Number of iterations required to turn $n$ into 1 in the Collatz process,
or none if $n$ does not terminate.
noncomputable def collatzSteps (n : ℕ) : Option ℕ :=
if n = 0 then none
else if ∃ k : ℕ, (collatzStep^[k]) n = 1 then
some (sInf {k : ℕ | (collatzStep^[k]) n = 1})
else
noneopen Classical in
The sequence $a(n) = \mathrm{A006577}(n+1) - \mathrm{A006577}(n)$ for $n > 0$,
or none if either $n$ or $n+1$ does not terminate.
noncomputable def a (n : ℕ) : Option ℤ :=
if n = 0 then none
else
match collatzSteps (n + 1), collatzSteps n with
| some s2, some s1 => some (s2 - s1)
| _, _ => none
Value of the sequence a at 0.
@[category test, AMS 11]
theorem a_0 : a 0 = none := ⊢ a 0 = none All goals completed! 🐙
Value of the sequence a at 1.
h1:IsLeast {k | collatzStep^[k] 1 = 1} 0h2:IsLeast {k | collatzStep^[k] 2 = 1} 1hs1:collatzSteps 1 = some 0hs2:collatzSteps 2 = some 1⊢ (match some 1, some 0 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 1; rfl All goals completed! 🐙
Value of the sequence a at 2.
@[category test, AMS 11]
theorem a_2 : a 2 = some 6 := by ⊢ a 2 = some 6
have h2 : IsLeast {k : ℕ | (collatzStep^[k]) 2 = 1} 1 := by
constructor left ⊢ 1 ∈ {k | collatzStep^[k] 2 = 1}right ⊢ 1 ∈ lowerBounds {k | collatzStep^[k] 2 = 1} h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6
· left ⊢ 1 ∈ {k | collatzStep^[k] 2 = 1} h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6 rfl All goals completed! 🐙 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6
· right ⊢ 1 ∈ lowerBounds {k | collatzStep^[k] 2 = 1} h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6 intro k hk right k:ℕhk:k ∈ {k | collatzStep^[k] 2 = 1}⊢ 1 ≤ k h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6; by_contra! h right k:ℕhk:k ∈ {k | collatzStep^[k] 2 = 1}h:k < 1⊢ False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6; interval_cases k right.«0» k:ℕhk:0 ∈ {k | collatzStep^[k] 2 = 1}h:0 < 1⊢ False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6; revert hk right.«0» k:ℕh:0 < 1⊢ 0 ∈ {k | collatzStep^[k] 2 = 1} → False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6; decide h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ a 2 = some 6
have h3 : IsLeast {k : ℕ | (collatzStep^[k]) 3 = 1} 7 := by
constructor left h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ 7 ∈ {k | collatzStep^[k] 3 = 1}right h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ 7 ∈ lowerBounds {k | collatzStep^[k] 3 = 1} h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6
· left h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ 7 ∈ {k | collatzStep^[k] 3 = 1} h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 rfl All goals completed! 🐙 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6
· right h2:IsLeast {k | collatzStep^[k] 2 = 1} 1⊢ 7 ∈ lowerBounds {k | collatzStep^[k] 3 = 1} h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 intro k hk right h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:k ∈ {k | collatzStep^[k] 3 = 1}⊢ 7 ≤ k h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6; by_contra! h right h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:k ∈ {k | collatzStep^[k] 3 = 1}h:k < 7⊢ False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6; interval_cases k right.«0» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:0 ∈ {k | collatzStep^[k] 3 = 1}h:0 < 7⊢ Falseright.«1» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:1 ∈ {k | collatzStep^[k] 3 = 1}h:1 < 7⊢ Falseright.«2» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:2 ∈ {k | collatzStep^[k] 3 = 1}h:2 < 7⊢ Falseright.«3» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:3 ∈ {k | collatzStep^[k] 3 = 1}h:3 < 7⊢ Falseright.«4» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:4 ∈ {k | collatzStep^[k] 3 = 1}h:4 < 7⊢ Falseright.«5» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:5 ∈ {k | collatzStep^[k] 3 = 1}h:5 < 7⊢ Falseright.«6» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:6 ∈ {k | collatzStep^[k] 3 = 1}h:6 < 7⊢ False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 <;> right.«0» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:0 ∈ {k | collatzStep^[k] 3 = 1}h:0 < 7⊢ Falseright.«1» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:1 ∈ {k | collatzStep^[k] 3 = 1}h:1 < 7⊢ Falseright.«2» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:2 ∈ {k | collatzStep^[k] 3 = 1}h:2 < 7⊢ Falseright.«3» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:3 ∈ {k | collatzStep^[k] 3 = 1}h:3 < 7⊢ Falseright.«4» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:4 ∈ {k | collatzStep^[k] 3 = 1}h:4 < 7⊢ Falseright.«5» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:5 ∈ {k | collatzStep^[k] 3 = 1}h:5 < 7⊢ Falseright.«6» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕhk:6 ∈ {k | collatzStep^[k] 3 = 1}h:6 < 7⊢ False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 revert hk right.«6» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:6 < 7⊢ 6 ∈ {k | collatzStep^[k] 3 = 1} → False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 <;> right.«0» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:0 < 7⊢ 0 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«1» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:1 < 7⊢ 1 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«2» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:2 < 7⊢ 2 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«3» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:3 < 7⊢ 3 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«4» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:4 < 7⊢ 4 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«5» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:5 < 7⊢ 5 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«6» h2:IsLeast {k | collatzStep^[k] 2 = 1} 1k:ℕh:6 < 7⊢ 6 ∈ {k | collatzStep^[k] 3 = 1} → False h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 decide h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 2 = some 6
have hs2 : collatzSteps 2 = some 1 := by
have h : ∃ k, (collatzStep^[k]) 2 = 1 := ⟨1, h2.1⟩ h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h:∃ k, collatzStep^[k] 2 = 1⊢ collatzSteps 2 = some 1 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6
rw [collatzSteps, h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h:∃ k, collatzStep^[k] 2 = 1⊢ (if 2 = 0 then none else if ∃ k, collatzStep^[k] 2 = 1 then some (sInf {k | collatzStep^[k] 2 = 1}) else none) = some 1 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6 if_neg (by h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h:∃ k, collatzStep^[k] 2 = 1⊢ ¬2 = 0 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6 omega All goals completed! 🐙 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6), if_pos h, h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h:∃ k, collatzStep^[k] 2 = 1⊢ some (sInf {k | collatzStep^[k] 2 = 1}) = some 1 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6 h2.csInf_eq h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h:∃ k, collatzStep^[k] 2 = 1⊢ some 1 = some 1 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6] h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1⊢ a 2 = some 6
have hs3 : collatzSteps 3 = some 7 := by
have h : ∃ k, (collatzStep^[k]) 3 = 1 := ⟨7, h3.1⟩ h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1h:∃ k, collatzStep^[k] 3 = 1⊢ collatzSteps 3 = some 7 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6
rw [collatzSteps, h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1h:∃ k, collatzStep^[k] 3 = 1⊢ (if 3 = 0 then none else if ∃ k, collatzStep^[k] 3 = 1 then some (sInf {k | collatzStep^[k] 3 = 1}) else none) = some 7 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6 if_neg (by h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1h:∃ k, collatzStep^[k] 3 = 1⊢ ¬3 = 0 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6 omega All goals completed! 🐙 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6), if_pos h, h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1h:∃ k, collatzStep^[k] 3 = 1⊢ some (sInf {k | collatzStep^[k] 3 = 1}) = some 7 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6 h3.csInf_eq h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1h:∃ k, collatzStep^[k] 3 = 1⊢ some 7 = some 7 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6] h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ a 2 = some 6
rw [a, h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (if 2 = 0 then none
else
match collatzSteps (2 + 1), collatzSteps 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6 if_neg (by h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ ¬2 = 0 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6 omega All goals completed! 🐙 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6), hs3, h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, collatzSteps 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6 hs2 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6 h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6] h2:IsLeast {k | collatzStep^[k] 2 = 1} 1h3:IsLeast {k | collatzStep^[k] 3 = 1} 7hs2:collatzSteps 2 = some 1hs3:collatzSteps 3 = some 7⊢ (match some 7, some 1 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 6; rfl All goals completed! 🐙
Value of the sequence a at 3.
@[category test, AMS 11]
theorem a_3 : a 3 = some (-5) := by ⊢ a 3 = some (-5)
have h3 : IsLeast {k : ℕ | (collatzStep^[k]) 3 = 1} 7 := by
constructor left ⊢ 7 ∈ {k | collatzStep^[k] 3 = 1}right ⊢ 7 ∈ lowerBounds {k | collatzStep^[k] 3 = 1} h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5)
· left ⊢ 7 ∈ {k | collatzStep^[k] 3 = 1} h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) rfl All goals completed! 🐙 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5)
· right ⊢ 7 ∈ lowerBounds {k | collatzStep^[k] 3 = 1} h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) intro k hk right k:ℕhk:k ∈ {k | collatzStep^[k] 3 = 1}⊢ 7 ≤ k h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5); by_contra! h right k:ℕhk:k ∈ {k | collatzStep^[k] 3 = 1}h:k < 7⊢ False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5); interval_cases k right.«0» k:ℕhk:0 ∈ {k | collatzStep^[k] 3 = 1}h:0 < 7⊢ Falseright.«1» k:ℕhk:1 ∈ {k | collatzStep^[k] 3 = 1}h:1 < 7⊢ Falseright.«2» k:ℕhk:2 ∈ {k | collatzStep^[k] 3 = 1}h:2 < 7⊢ Falseright.«3» k:ℕhk:3 ∈ {k | collatzStep^[k] 3 = 1}h:3 < 7⊢ Falseright.«4» k:ℕhk:4 ∈ {k | collatzStep^[k] 3 = 1}h:4 < 7⊢ Falseright.«5» k:ℕhk:5 ∈ {k | collatzStep^[k] 3 = 1}h:5 < 7⊢ Falseright.«6» k:ℕhk:6 ∈ {k | collatzStep^[k] 3 = 1}h:6 < 7⊢ False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) <;> right.«0» k:ℕhk:0 ∈ {k | collatzStep^[k] 3 = 1}h:0 < 7⊢ Falseright.«1» k:ℕhk:1 ∈ {k | collatzStep^[k] 3 = 1}h:1 < 7⊢ Falseright.«2» k:ℕhk:2 ∈ {k | collatzStep^[k] 3 = 1}h:2 < 7⊢ Falseright.«3» k:ℕhk:3 ∈ {k | collatzStep^[k] 3 = 1}h:3 < 7⊢ Falseright.«4» k:ℕhk:4 ∈ {k | collatzStep^[k] 3 = 1}h:4 < 7⊢ Falseright.«5» k:ℕhk:5 ∈ {k | collatzStep^[k] 3 = 1}h:5 < 7⊢ Falseright.«6» k:ℕhk:6 ∈ {k | collatzStep^[k] 3 = 1}h:6 < 7⊢ False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) revert hk right.«6» k:ℕh:6 < 7⊢ 6 ∈ {k | collatzStep^[k] 3 = 1} → False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) <;> right.«0» k:ℕh:0 < 7⊢ 0 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«1» k:ℕh:1 < 7⊢ 1 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«2» k:ℕh:2 < 7⊢ 2 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«3» k:ℕh:3 < 7⊢ 3 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«4» k:ℕh:4 < 7⊢ 4 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«5» k:ℕh:5 < 7⊢ 5 ∈ {k | collatzStep^[k] 3 = 1} → Falseright.«6» k:ℕh:6 < 7⊢ 6 ∈ {k | collatzStep^[k] 3 = 1} → False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) decide h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ a 3 = some (-5)
have h4 : IsLeast {k : ℕ | (collatzStep^[k]) 4 = 1} 2 := by
constructor left h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ 2 ∈ {k | collatzStep^[k] 4 = 1}right h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ 2 ∈ lowerBounds {k | collatzStep^[k] 4 = 1} h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5)
· left h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ 2 ∈ {k | collatzStep^[k] 4 = 1} h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) rfl All goals completed! 🐙 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5)
· right h3:IsLeast {k | collatzStep^[k] 3 = 1} 7⊢ 2 ∈ lowerBounds {k | collatzStep^[k] 4 = 1} h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) intro k hk right h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕhk:k ∈ {k | collatzStep^[k] 4 = 1}⊢ 2 ≤ k h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5); by_contra! h right h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕhk:k ∈ {k | collatzStep^[k] 4 = 1}h:k < 2⊢ False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5); interval_cases k right.«0» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕhk:0 ∈ {k | collatzStep^[k] 4 = 1}h:0 < 2⊢ Falseright.«1» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕhk:1 ∈ {k | collatzStep^[k] 4 = 1}h:1 < 2⊢ False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) <;> right.«0» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕhk:0 ∈ {k | collatzStep^[k] 4 = 1}h:0 < 2⊢ Falseright.«1» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕhk:1 ∈ {k | collatzStep^[k] 4 = 1}h:1 < 2⊢ False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) revert hk right.«1» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕh:1 < 2⊢ 1 ∈ {k | collatzStep^[k] 4 = 1} → False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) <;> right.«0» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕh:0 < 2⊢ 0 ∈ {k | collatzStep^[k] 4 = 1} → Falseright.«1» h3:IsLeast {k | collatzStep^[k] 3 = 1} 7k:ℕh:1 < 2⊢ 1 ∈ {k | collatzStep^[k] 4 = 1} → False h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) decide h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 3 = some (-5)
have hs3 : collatzSteps 3 = some 7 := by
have h : ∃ k, (collatzStep^[k]) 3 = 1 := ⟨7, h3.1⟩ h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h:∃ k, collatzStep^[k] 3 = 1⊢ collatzSteps 3 = some 7 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5)
rw [collatzSteps, h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h:∃ k, collatzStep^[k] 3 = 1⊢ (if 3 = 0 then none else if ∃ k, collatzStep^[k] 3 = 1 then some (sInf {k | collatzStep^[k] 3 = 1}) else none) = some 7 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5) if_neg (by h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h:∃ k, collatzStep^[k] 3 = 1⊢ ¬3 = 0 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5) omega All goals completed! 🐙 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5)), if_pos h, h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h:∃ k, collatzStep^[k] 3 = 1⊢ some (sInf {k | collatzStep^[k] 3 = 1}) = some 7 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5) h3.csInf_eq h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h:∃ k, collatzStep^[k] 3 = 1⊢ some 7 = some 7 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5)] h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7⊢ a 3 = some (-5)
have hs4 : collatzSteps 4 = some 2 := by
have h : ∃ k, (collatzStep^[k]) 4 = 1 := ⟨2, h4.1⟩ h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7h:∃ k, collatzStep^[k] 4 = 1⊢ collatzSteps 4 = some 2 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5)
rw [collatzSteps, h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7h:∃ k, collatzStep^[k] 4 = 1⊢ (if 4 = 0 then none else if ∃ k, collatzStep^[k] 4 = 1 then some (sInf {k | collatzStep^[k] 4 = 1}) else none) = some 2 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5) if_neg (by h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7h:∃ k, collatzStep^[k] 4 = 1⊢ ¬4 = 0 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5) omega All goals completed! 🐙 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5)), if_pos h, h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7h:∃ k, collatzStep^[k] 4 = 1⊢ some (sInf {k | collatzStep^[k] 4 = 1}) = some 2 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5) h4.csInf_eq h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7h:∃ k, collatzStep^[k] 4 = 1⊢ some 2 = some 2 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5)] h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ a 3 = some (-5)
rw [a, h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (if 3 = 0 then none
else
match collatzSteps (3 + 1), collatzSteps 3 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5) if_neg (by h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ ¬3 = 0 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5) omega All goals completed! 🐙 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5)), hs4, h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, collatzSteps 3 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5) hs3 h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5) h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5)] h3:IsLeast {k | collatzStep^[k] 3 = 1} 7h4:IsLeast {k | collatzStep^[k] 4 = 1} 2hs3:collatzSteps 3 = some 7hs4:collatzSteps 4 = some 2⊢ (match some 2, some 7 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some (-5); rfl All goals completed! 🐙
Value of the sequence a at 4.
@[category test, AMS 11]
theorem a_4 : a 4 = some 3 := by ⊢ a 4 = some 3
have h4 : IsLeast {k : ℕ | (collatzStep^[k]) 4 = 1} 2 := by
constructor left ⊢ 2 ∈ {k | collatzStep^[k] 4 = 1}right ⊢ 2 ∈ lowerBounds {k | collatzStep^[k] 4 = 1} h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3
· left ⊢ 2 ∈ {k | collatzStep^[k] 4 = 1} h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 rfl All goals completed! 🐙 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3
· right ⊢ 2 ∈ lowerBounds {k | collatzStep^[k] 4 = 1} h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 intro k hk right k:ℕhk:k ∈ {k | collatzStep^[k] 4 = 1}⊢ 2 ≤ k h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3; by_contra! h right k:ℕhk:k ∈ {k | collatzStep^[k] 4 = 1}h:k < 2⊢ False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3; interval_cases k right.«0» k:ℕhk:0 ∈ {k | collatzStep^[k] 4 = 1}h:0 < 2⊢ Falseright.«1» k:ℕhk:1 ∈ {k | collatzStep^[k] 4 = 1}h:1 < 2⊢ False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 <;> right.«0» k:ℕhk:0 ∈ {k | collatzStep^[k] 4 = 1}h:0 < 2⊢ Falseright.«1» k:ℕhk:1 ∈ {k | collatzStep^[k] 4 = 1}h:1 < 2⊢ False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 revert hk right.«1» k:ℕh:1 < 2⊢ 1 ∈ {k | collatzStep^[k] 4 = 1} → False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 <;> right.«0» k:ℕh:0 < 2⊢ 0 ∈ {k | collatzStep^[k] 4 = 1} → Falseright.«1» k:ℕh:1 < 2⊢ 1 ∈ {k | collatzStep^[k] 4 = 1} → False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 decide h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ a 4 = some 3
have h5 : IsLeast {k : ℕ | (collatzStep^[k]) 5 = 1} 5 := by
constructor left h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ 5 ∈ {k | collatzStep^[k] 5 = 1}right h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ 5 ∈ lowerBounds {k | collatzStep^[k] 5 = 1} h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3
· left h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ 5 ∈ {k | collatzStep^[k] 5 = 1} h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 rfl All goals completed! 🐙 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3
· right h4:IsLeast {k | collatzStep^[k] 4 = 1} 2⊢ 5 ∈ lowerBounds {k | collatzStep^[k] 5 = 1} h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 intro k hk right h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:k ∈ {k | collatzStep^[k] 5 = 1}⊢ 5 ≤ k h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3; by_contra! h right h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:k ∈ {k | collatzStep^[k] 5 = 1}h:k < 5⊢ False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3; interval_cases k right.«0» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:0 ∈ {k | collatzStep^[k] 5 = 1}h:0 < 5⊢ Falseright.«1» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:1 ∈ {k | collatzStep^[k] 5 = 1}h:1 < 5⊢ Falseright.«2» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:2 ∈ {k | collatzStep^[k] 5 = 1}h:2 < 5⊢ Falseright.«3» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:3 ∈ {k | collatzStep^[k] 5 = 1}h:3 < 5⊢ Falseright.«4» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:4 ∈ {k | collatzStep^[k] 5 = 1}h:4 < 5⊢ False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 <;> right.«0» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:0 ∈ {k | collatzStep^[k] 5 = 1}h:0 < 5⊢ Falseright.«1» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:1 ∈ {k | collatzStep^[k] 5 = 1}h:1 < 5⊢ Falseright.«2» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:2 ∈ {k | collatzStep^[k] 5 = 1}h:2 < 5⊢ Falseright.«3» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:3 ∈ {k | collatzStep^[k] 5 = 1}h:3 < 5⊢ Falseright.«4» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕhk:4 ∈ {k | collatzStep^[k] 5 = 1}h:4 < 5⊢ False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 revert hk right.«4» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕh:4 < 5⊢ 4 ∈ {k | collatzStep^[k] 5 = 1} → False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 <;> right.«0» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕh:0 < 5⊢ 0 ∈ {k | collatzStep^[k] 5 = 1} → Falseright.«1» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕh:1 < 5⊢ 1 ∈ {k | collatzStep^[k] 5 = 1} → Falseright.«2» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕh:2 < 5⊢ 2 ∈ {k | collatzStep^[k] 5 = 1} → Falseright.«3» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕh:3 < 5⊢ 3 ∈ {k | collatzStep^[k] 5 = 1} → Falseright.«4» h4:IsLeast {k | collatzStep^[k] 4 = 1} 2k:ℕh:4 < 5⊢ 4 ∈ {k | collatzStep^[k] 5 = 1} → False h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 decide h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5⊢ a 4 = some 3
have hs4 : collatzSteps 4 = some 2 := by
have h : ∃ k, (collatzStep^[k]) 4 = 1 := ⟨2, h4.1⟩ h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5h:∃ k, collatzStep^[k] 4 = 1⊢ collatzSteps 4 = some 2 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3
rw [collatzSteps, h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5h:∃ k, collatzStep^[k] 4 = 1⊢ (if 4 = 0 then none else if ∃ k, collatzStep^[k] 4 = 1 then some (sInf {k | collatzStep^[k] 4 = 1}) else none) = some 2 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3 if_neg (by h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5h:∃ k, collatzStep^[k] 4 = 1⊢ ¬4 = 0 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3 omega All goals completed! 🐙 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3), if_pos h, h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5h:∃ k, collatzStep^[k] 4 = 1⊢ some (sInf {k | collatzStep^[k] 4 = 1}) = some 2 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3 h4.csInf_eq h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5h:∃ k, collatzStep^[k] 4 = 1⊢ some 2 = some 2 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3] h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2⊢ a 4 = some 3
have hs5 : collatzSteps 5 = some 5 := by
have h : ∃ k, (collatzStep^[k]) 5 = 1 := ⟨5, h5.1⟩ h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2h:∃ k, collatzStep^[k] 5 = 1⊢ collatzSteps 5 = some 5 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3
rw [collatzSteps, h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2h:∃ k, collatzStep^[k] 5 = 1⊢ (if 5 = 0 then none else if ∃ k, collatzStep^[k] 5 = 1 then some (sInf {k | collatzStep^[k] 5 = 1}) else none) = some 5 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3 if_neg (by h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2h:∃ k, collatzStep^[k] 5 = 1⊢ ¬5 = 0 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3 omega All goals completed! 🐙 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3), if_pos h, h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2h:∃ k, collatzStep^[k] 5 = 1⊢ some (sInf {k | collatzStep^[k] 5 = 1}) = some 5 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3 h5.csInf_eq h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2h:∃ k, collatzStep^[k] 5 = 1⊢ some 5 = some 5 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3] h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ a 4 = some 3
rw [a, h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (if 4 = 0 then none
else
match collatzSteps (4 + 1), collatzSteps 4 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3 if_neg (by h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ ¬4 = 0 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3 omega All goals completed! 🐙 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3), hs5, h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, collatzSteps 4 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3 hs4 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3 h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3] h4:IsLeast {k | collatzStep^[k] 4 = 1} 2h5:IsLeast {k | collatzStep^[k] 5 = 1} 5hs4:collatzSteps 4 = some 2hs5:collatzSteps 5 = some 5⊢ (match some 5, some 2 with
| some s2, some s1 => some (↑s2 - ↑s1)
| x, x_1 => none) =
some 3; rfl All goals completed! 🐙The set of positive indices $n$ for which $a(n) = v$.
def indices (v : ℤ) : Set ℕ :=
{n : ℕ | 0 < n ∧ a n = some v}Conjecture 1: More than half of the terms are 0.
Ya-Ping Lu, May 04 2024
@[category research open, AMS 11]
theorem conjecture1 :
1 / 2 < Filter.atTop.liminf (fun n : ℕ ↦
(((Finset.Icc 1 n).filter (fun i ↦ a i = some 0)).card : ℝ) / (n : ℝ)) := by ⊢ 1 / 2 < Filter.liminf (fun n ↦ ↑{i ∈ Finset.Icc 1 n | a i = some 0}.card / ↑n) Filter.atTop
sorry All goals completed! 🐙Conjecture 2: 1, 6 and 16 appear only once and 3 appears twice in the sequence, i.e., $a(1) = 1$, $a(2) = 6$, $a(4) = a(5) = 3$, and $a(8) = 16$.
Ya-Ping Lu, May 04 2024
@[category research open, AMS 11]
theorem conjecture2 :
indices 1 = {1} ∧
indices 6 = {2} ∧
indices 16 = {8} ∧
indices 3 = {4, 5} := by ⊢ indices 1 = {1} ∧ indices 6 = {2} ∧ indices 16 = {8} ∧ indices 3 = {4, 5}
sorry All goals completed! 🐙Conjecture 3 (Ya-Ping Lu, 2024): Except 1, 3 and 6, the absolute value of all terms can be written as $5x + 8y$ for $x, y \in \mathbb{N}$. (Note: in the OEIS comment, "x and y are integers" means $x$ and $y$ have the same sign, i.e., $|v| = 5x + 8y$ with $x, y \ge 0$, since every integer is a $\mathbb{Z}$-linear combination of 5 and 8).
@[category research open, AMS 11]
theorem conjecture3 (n : ℕ) (v : ℤ) (hn : 0 < n) (ha : a n = some v)
(hv : v ≠ 1 ∧ v ≠ 3 ∧ v ≠ 6) :
∃ x y : ℕ, v.natAbs = 5 * x + 8 * y := by n:ℕv:ℤhn:0 < nha:a n = some vhv:v ≠ 1 ∧ v ≠ 3 ∧ v ≠ 6⊢ ∃ x y, v.natAbs = 5 * x + 8 * y
sorry All goals completed! 🐙Conjecture 4 (Ya-Ping Lu, 2024): The ratio of the number of terms with value $m$ to that of $-m$ approaches 1 as $n \to \infty$, for any $m \notin {1, 3, 6, 16}$.
@[category research open, AMS 11]
theorem conjecture4 (m : ℤ) (hm : m ≠ 1 ∧ m ≠ 3 ∧ m ≠ 6 ∧ m ≠ 16) :
Filter.atTop.Tendsto
(fun n : ℕ ↦
(((Finset.Icc 1 n).filter (fun i ↦ a i = some m)).card : ℝ) /
(((Finset.Icc 1 n).filter (fun i ↦ a i = some (-m))).card : ℝ))
(nhds 1) := by m:ℤhm:m ≠ 1 ∧ m ≠ 3 ∧ m ≠ 6 ∧ m ≠ 16⊢ Filter.Tendsto (fun n ↦ ↑{i ∈ Finset.Icc 1 n | a i = some m}.card / ↑{i ∈ Finset.Icc 1 n | a i = some (-m)}.card)
Filter.atTop (nhds 1)
sorry All goals completed! 🐙end OeisA153330