top of page
Website design_thefacultiesofthesoul3-07

 The   Collatz   conjecture   by a   DIFFERENT   point of view

In the past, I have already dealt with the Collatz conjecture, a fascinating topic because it is simple to verify but impossible to demonstrate at the same time (www.facultiesofthesoul.com/collatz-conjecture). 

 

I have recently been sent an article regarding the possibility of seeing Collatz in binary notation by my friend Vincs (Aka Vincenzo Sambito), an enthusiast and scholar of the most interesting enigmas of mathematics. I have already collaborated with him on the sidelines of his conjecture on the creation of increasingly larger prime numbers through primorial numbers (www.facultiesofthesoul.com/generate-primes-by-primorials).

About this topic, you can look at his website www.vincs.it. 

 

The author, goliardically, wanted to call his reinterpretation "The Vincs-Collatz bisconjecture " VincS also claims that he has got a wonderful demonstration of his conjecture but, unfortunately, it doesn’t fit in the margin of this page.

 

 

The VincS-Collatz bisconjecture

 

For those who don't know it, we propose the famous VincS-Collatz bisconjecture below. The classic Collatz conjecture supposes that if, to any natural number n (excluding zero), the passage (group of logical/arithmetic operations) is applied cyclically • if even, n/2  • if odd, n*3+1, it always reduces to 1. For more information on the Collatz conjecture, the literature is extensive and easily available. Let us instead see what the VincS-Collatz bisconjecture supposes.

 

 

Premise: 

Every natural number can be expressed as a sum of powers of 2. For example 5=2^2+2^0. The evidence for this is clear if the natural number is expressed in binary notation. When we talk about "decomposition" it will therefore be necessary to specify whether in terms of "product of prime factors, possibly raised to an exponent" or as "sum of powers of 2". We will indicate with the suffix “b” the numbers expressed in binary notation. We will indicate with the suffix “d” the numbers expressed in decimal notation. 5d = 101b, …. 10d = 1010b, …. 256d = 100000000b

 

 

The VincS-Collatz bisconjecture assumes that:

Take any natural number (excluding zero) and subject it repeatedly to these steps until the cycle exit conditions, defined in point 1., are reached:

  1. if the number (the input number or the exit number at the final point of this passage) is equivalent to any power of 2 (including zero or 2^0=1), the cycle is exited!

  2. the number is multiplied by a "multiplier" (an integer natural number greater than 0)

  3. the smallest power of 2 that makes up the number itself is added to the number obtained (compound as the sum of powers of 2)

 

The VincS-Collatz bisconjecture states that, whatever the initial number, for a "multiplier" equal to 1, 2 or 3, the exit from the cycle will be always as described in point 1. of the passage.

 

 

Considerations:

it can easily be demonstrated that the VincS-Collatz bisconjecture is completely analogous to the Collatz conjecture where the "multiplier" is equal to 3. When the VincS-Collatz bisconjecture will be proven, the Collatz conjecture will be proven as well. Reasoning with the powers of 2 in decimal notation hides some calculation difficulties. Reasoning in binary notation makes the calculations much simpler and of considerable visual impact for our reasoning on the Collatz conjecture and the VincS-Collatz bisconjecture. In reality, this way of looking at the Collatz conjecture is not even original. However, the author adds, in his conjecture, the variants of the multiplier that are 1 and 2, in addition to the canonical 3. It may seem trivial and perhaps it really is.

 

See, here below, how it works!

Note on the left side the exact equivalence of “classic Collatz” numbers with the VincS-Collatz numbers.

IMAGE 1.jpg

Note:

“inc” is the increaser and represents the smallest power of 2 into which the number can be decomposed, in sum of powers of 2, after being multiplied by 3. It is the analogue of 1, which is added, after multiplying by 3, in the classical Collatz conjecture. In the example shown, the final number, which allows exit from the cycle, is 100000000000000000000b = 1048576d which is exactly a power of 2 or 2^20 (2 raised to the power of 20). With the classical Collatz conjecture, it takes 26 cycles to get to 1 (because divisions by 2 are included). With the VincS-Collatz bisconjecture it only takes 6 steps because it avoids the steps where you divide by 2 when the number is even. In the example above you will be able to notice, in the first column, that the numbers that are generated, step after step, are completely similar (if taken from the most significant bit 1 to the least significant bit 1) to those of the classic conjecture of Collatz (alternatively, exactly equal before they are multiplied by 3 and deficient by 1 before 1 is added to them). The analogy with the classic Collatz conjecture is also evident from the fact that the exponent of 2 at the exit of the cycle is equal to the number of divisions by 2 that are carried out with the classic Collatz algorithm to exit the cycle with 1.

The analogy between the Collatz conjecture and the VincS-Collatz bisconjecture

 

It can easily be shown that the VincS-Collatz bisconjecture is completely analogous to the Collatz conjecture for the “multiplier” equal to 3. Once the VincS-Collatz bisconjecture is proven for this multiplier, the Collatz conjecture will also be proven. Thinking in binary notation also makes the analogy evident visually. First of all, we point out how, in the example just shown, the exponent of the power of 2 of the number exiting the cycle, i.e. 2^20, is equal to the number of divisions by 2, in the classical Collatz development, for the same number 1325. That is there are 20 divisions by 2 in the development of the classical Collatz conjecture for the same input number. I have personally developed many examples and this analogy has always manifested itself. It is not just an observation but can also be easily demonstrated. It seems to offend the reader's intelligence to want to explain the proof here.

 

Division by 2, until the number becomes odd, is trivial but not in a derogatory sense. That is, it adds nothing to keep the number multiplied to the power of 2 equivalent to the current passage. If this is not obvious when working in decimal notation, it becomes obvious in binary notation. The Collatz loop, in the *3+1 part, pushes the least significant 1 bit inexorably to the left. When the number becomes even, it means that some bits have been added to the 0 on the right. Removing a bit from 0 on the right means dividing by 2. Precisely for this reason, if you consider odd numbers, you can consider the number, relating to each step, from the most significant bit 1 on the left to the least significant bit 1 on the right. All 0 bits to the right of it, i.e. to the right of the rightmost least significant 1 bit, can be “ignored” or, if you prefer another term, “set aside”.

 

In binary notation, the analogy is evident even if we start with an even number. In fact, if there are zeros on the right, they will continue to be ignored, as will the first series of divisions by 2 in classical Collatz, if the starting number is even. Among other things, the link between the number of divisions by 2 of classical Collatz and the power of 2 resulting from the VincS-Collatz bisconjecture is preserved.

 

001010000b = inputNumber

011110000b = inputNumber * 3

increaser

 00010000b

inputNumber*3+increaser

100000000b

 

From what you can see in the example above, starting with the number 5 or starting with the number 80 is identical if the VincS-Collatz bisconjecture is applied. The loop exits with an exact power of 2, with the same number of steps, regardless of the number of zeros queued in the least significant bits of the starting number. I am sure that a forest could have been saved if this simple reasoning had been applied to the classical Collatz conjecture for the numbers 5, 10, 20, 40, 80, 160, etc., but also 13, 26, 52, 104, 208, etc., and so on. In the following considerations and examples, we will neglect this aspect and take it for granted that we always start from an odd number, without in any way affecting the value of the same and of the final proof.

 

Thanks

 

 

Last but not least, I thank my friend Silvio Gabbianelli for reawakening my interest in a work that began in the first days of 2021 and had been lying in a drawer for some time. I also thank him for keeping me company in these last months and for having written the first program in Python that experimentally validates the VincS-Collatz bisconjecture.

 

Here is the output of his program that implements my algorithm, updated to today 26 February 2025, for input number 55 and multiplier 3. It will remain in history as the first validation of the VincS-Collatz bisconjecture.
 

IMAGE 2.jpg

Python programs (by Silvio Gabbianelli)


After having reported the VincS-Collatz bisconjecture, below you will find examples and the two Python programs I developed for the implementations, the classic one where I report the numbers of the steps also in binary notation and that of my friend Vincenzo Sambito (aka VincS).
To abbreviate I will use small numbers that need a few steps to reach the conclusion but in theory larger numbers can also be inserted.

 

Example file implementing the classical Collatz conjecture:

Program to implement Collatz conjecture from every positive integer)

Edited by Gasbion 02/2025

 

Enter a positive integer: 7

10110 22

1011 11

100010 34

10001 17

110100 52

11010 26

1101 13

101000 40

10100 20

1010 10

101 5

10000 16

1000 8

100 4

10 2

1 1

(11, 'steps down') (5, 'steps up)', (16, 'total steps'))

 

Now an example with the same number with the program I developed to implement the conjecture of my friend Vincenzo equivalent to the classical one, the program is limited to 300 steps but can be modified to go beyond this number:

Program to implement VincS Collatz bis conjecture from every positive integer)

Edited by Gasbion 02/2025

 

If True return last x as a 2 power

Enter a positive integer in binary notation: 111

Iteration, 1: x0=('111', 7), k0=('10101', 21),  fi=('1', 1), x=('10110', 22)

Iteration, 2: x0=('10101', 21), k0=('1000010', 66),  fi=('10', 2), x=('1000100', 68)

Iteration, 3: x0=('1000010', 66), k0=('11001100', 204),  fi=('100', 4), x=('11010000', 208)

Iteration, 4: x0=('11001100', 204), k0=('1001110000', 624),  fi=('10000', 16), x=('1010000000', 640)

Iteration, 5: x0=('1001110000', 624), k0=('11110000000', 1920),  fi=('10000000', 128), x=('100000000000', 2048)

 

Note how the number of steps up coincides in the two conjectures, the steps down coincides with te exponent of the 2 powers of last value of x. Below you will find the codes of the two programs that you can try by copying them onto the appropriate Python IDLE.

 

First program:

# -*- coding: cp1252 -*-

def nBin(n):

    binario = bin(n)[2:]

    return binario

while True:

    n=0

    def main():

     print ("Program to implement Collatz conjecture from every positive integer)")

     print ("Edited by Gasbion 02/2025")

     n=int(input("Enter a positive integer: "))

     a=0

     b=0

     while(n>0):

            if n%2==0:

             n=int(n/2)

             print (nBin(n), (n))#, (n)%9#, totient(n)

             a=a+1

            else:

                n=3*n+1

                print (nBin(n), (n))#,(n)#%9, totient(n)

                b=b+1

            if(n==1):

              print((a, "steps down"), (b, "steps up)", (a+b, "total steps")))

              break

            

    if __name__=='__main__':

     main()

ans = raw_input('wish to continue? y=yes' )

if not 'y' in ans.lower():

     exit()

 

 

Second program:

while True:

 def TP2p(n):

    Bitp = 1

    while (Bitp & n) == 0:

        Bitp <<= 1

    return Bitp

 def NBin(n):

    binario = bin(n)[2:]

    return binario

 def main():

    print ("Program to implement VincS Collatz bis conjecture from every positive integer)")

    print ("Edited by Gasbion 02/2025")

    print ("If True return last x as a 2 power")

    x0 = int(input("Enter a positive integer in binary notation: "), 2)

    k0 = x0 * 3

    iterazioni = 1

    while iterazioni <=300:  

        fi = TP2p(k0)

        x = k0 + fi

        if x == 2 ** (x.bit_length() - 1):

            print(f"Iteration, {iterazioni}: x0={NBin(x0), x0}, k0={NBin(k0), k0},  fi={NBin(fi), fi}, x={NBin(x), x}")

            break

        print(f"Iteration, {iterazioni}: x0={NBin(x0), x0}, k0={NBin(k0), k0},  fi={NBin(fi), fi}, x={NBin(x), x}")

        x0 = k0

        k0 = x * 3

        fi = TP2p(k0)

        iterazioni += 1

 if __name__ == "__main__":

    main()

Website design_thefacultiesofthesoul2-07

Faculties of the Soul©2020 Property of Silvio Gabbianelli.      Design by Aurora Gabbianelli

bottom of page