On Wed, 2025-12-24 at 20:03 +0800, wij wrote:
I have just finished the script. Any defect,insufficiency, or typo?
------------------
This file is intended a proof of Collatz Conjecture. The contents may be updated anytime.
https://sourceforge.net/projects/cscall/files/MisFiles/Coll-proof-en.txt/do wnload
The text is converted by google translate with modest modification from
https://sourceforge.net/projects/cscall/files/MisFiles/Coll-proof-zh.txt/do wnload
Reader might want to try different translator or different settings.
---------------------------------------------------------------------------
--
Collatz function ::=
int cop(int n) {
if(n<=1) {
if(n<1) {
throw Error;
}
return 1; // 1 is the iteration endpoint
}
if(n%2) {
return 3*n+1; // Odd number rule
} else {
return n/2; // Even number rule
}
}
Collatz number: If an integer n, n?N<1,+1>, after the cop iteration
will
eventually calculate to 1 (i.e., cop(...cop(n))=1), then n is a Colla
tz
number. Otherwise n is not a Collatz number.
Collatz Problem: For each integer n, n?N<1,+1>, is n a Collatz numb
er? IOW,
the question is equivalent to asking whether the following procedure rc
op
terminates or not.
void rcop(int n) {
for(;n!=1;) {
n=cop(n);
}
}
Prop: cop(n) iteration contains no cycle (except for the '1-4-2-1' cycle, s ince
1 is the termination condition).
Proof: n can be decomposed into n= a+b. rcop(n) can be rewritten as rco p2(n):
void rcop2(int n) {
int a=n,b=0;
for(;a+b!=1;) { // a+b= n in the cop iterative process.
if((a%2)!=0) {
--a; ++b; // Adjust a and b so that a remains even and the
// following algorithm can be performed and remains
// equivalent to cop(n) iteration.
}
if((b%2)!=0) { // Equivalent to (a+b)%2 (because a is even).
a= 3*a;
b= 3*b+1; // 3*(a+b)+1= (3*a) +(3*b+1)
} else {
a= a/2;
b= b/2;
}
}
}
Let n?, a?, b? represent the values n,a, and
b in the iteration.
Assume that the cop(n) iteration is cyclic. The cycle is a fixed-leng
th
sequence, and the process must contain the operations 3x+1 and x/2 (a
nd
the associated operations --a and ++b, unless n is a 2^x number, but such
numbers do not cycle). Let the cyclic sequence of n be:
n?, n?, n?, ..., n? (n=n?
).
Because --a and ++b are continuously interpolated during the cycle, i
f
a??0, then b? and n?=a?+b
? will increase infinitely, contradicting the
assumption that n? is cyclic. Therefore, a?=0 must
hold during the cycle,
but the condition of a?=0 only exists in 1-4-2-1, a?
?=0 cannot cause the
non-1-4-2-1 cycle of n?,n?,n?,...,n?.
Therefore, we can conclude that cop(n) iterations are non-cyclic.
Prop: For any n?N<1,+1>, the cop iteration operation terminates.
Proof: Since an odd number n will always become even immediately after th
e
cop iteration, it must undergo n/2 iterations. Therefore, we have an
equivalent rcop3:
void rcop3(int n) {
int a=n,b=0;
for(; a+b!=1;) {
if((a%2)!=0) {
--a; ++b;
}
// a/b measure point A
if((b%2)!=0) {
a= 3*a;
b= 3*b+1;
}
a= a/2;
b= b/2;
}
}
Let n be odd and there be no `--a`, `++b` process. Assume that each o
dd
operation is paired with only one even operation (the actual ratio is
1.5
even operations, but 1.5 is a statistical value; the decisive inferen
ce
can only take the guaranteed value of 1). Then, at measurement point
A,
we have:
a? = n-1
a? = (3*a???)/2 = ... = (n-1)*(
3/2)???
b? = 1
b? = (3*b???+1)/2 = ... = 2*(3/
2)??? -1
a?/b? = (a???)/(b?
??) = ((n-1)*(3/2)???)/(2*(3/2)?
?? -1)
= ... = (n-1)/(2-1/(3/2)???)
Interim summary: a?/b? < a???
/b??? and lim{x->ì} a?/b?
= (n-1)/2.
(After eight iterations, a?/b? is approximately 0.5
1. Actual iterations
may also include --a and ++b operations, so the actual value of a
?/b?
will converge faster than the formula)
Let r = a/b, then n/b = (a+b)/b = a/b+1 = r+1
=> b = (a+b)/(r+1)
Assuming the cop(n) iteration does not terminate, and m is one of the
number in the iteration sequence. Therefore, we can derive the
following:
=> b = m/(r+1)
=> The limit of r+1 = (m-1)/2 + 1 = (m+1)/2
=> b = (2*m)/(m+1) = 2/(1+1/m)
=> b = 2 (the limit of b. At least it is known that m will be a l
arge
number)
Since there is a limit (the numerical value is not important), the
iteration involves an infinite number of iterations of --a, a will
inevitably become zero, so the iteration cannot fail to meet the
iteration termination contion.
If n is even, then repeating the even operation (a finite number of t imes)
cop(n) will yield an odd number without affecting the termination res
ult
as stated above. Therefore, the proposition is proved.
[Reference] Real number and infinity. Recurring decimals are irrational num bers.
https://sourceforge.net/projects/cscall/files/MisFiles/RealNumber2-en .txt/download
--- PyGate Linux v1.5.5
* Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)