I'm doing an investigation into the semantic foundations of mathematics, and I'm coming upon a very strange phenomenon over and over. I'm curious if there are any math heads in here that could comment on this research. This is a very subtle question that requires a basic computer science and mathematics background. This may sound strange at first until you read the entire argument.
In computer science, a function is defined exclusively as a procedure that takes an input (argument) and computes or generates an output based on that input.
In C++, for example, floor() is a function that takes any floating point number as an argument, and computes and returns the value of the input rounded down to its nearest integer. E.g., the input of floor(5.4) computes an output of 5; floor(4.4992) computes 4; floor(3.29492) computes 3, etc.
"Computes" is the very important operative term. A function in this computer science context is a machine that takes an input and computes, or renders an output. You put something in, you get something else out.
Big deal—we have functions in math that compute outputs.
Or do we?
Do functions in math compute outputs or do they map elements only? One may at first think this is no big deal, until we see something very strange going on with number sets.
According to wiki, and confirmed elsewhere:
In mathematics, a function is a binary relation between two sets that simply associates each element of the first set to exactly one element of the second set. What's very important here is that the sets do not need to contain numbers to do so; meaning, there is no computation involved with the generation of values for a target set (codomain).
I.e., the definition of function is simply about ordered pairs of the contents of one set vs. another, not about any procedure that computes the ordered pair.
So if we define set X = { 1, 2, 3}
and set Y = { D, B, C, A }
We can define a function as:
\( f: X → Y \)
The function is defined NOT as a computational procedure, but merely as the set of ordered pairs:
{(1, D), (2, C), (3, C)}
Is there a computation rendering the codomain from the domain here? No. There is a pairing, or a mapping between sets simply as an enumeration or listing of the sets' elements, or symbols. The type of pairing is either injection, surjection, or bijection, and it has nothing to do with numbers or computations thereof to determine the pairing.
Set A = { 1, 2, 3, 4, 5 }
and
Set B = { 2, 4, 6, 8, 10 }
Seem to be related numerically and arithmetically. However, if we pair them as this function:
{(1,2), (2,4), (3, 6), (4, 8), (5, 10)}
We do not do so as a condition of any arithmetic relationship (such as 2x). We simply say there's a bijection between both sets if we can pair the elements one-to-one irrespective of any seeming computational relationship between the numbers. I.e., we are not pairing them due to a computational procedure such as f(x)=2x. We are pairing them as symbols occupying set elements only. The function is the pairing.
Why is this such a big deal?
Because in this context we are actually judging cardinality—or total number of elements—of a set by the number of occupied indexes ONLY. There is a bijectability between A and B below as much as there is between A and C, or B and C:
Set A = { 1, 2, 3, 4, 5 }
Set B = { 2, 4, 6, 8, 10 }
Set C = { £, ß, ç, œ, ® }
It's tempting to say we "generated set B" by the procedure f(x) = 2x. Indeed, if we put the values of set A through f(x) = 2x, we can actually generate the elements residing in set B. But a bijective function is NOT defined this way: It is defined ONLY as a one-to-one pairing between existing set elements, independent of the representation of the elements, whether alpha or numeric. Whether alpha or numeric is key here.
Even though a set in mathematics doesn't have addressable indexes like an array in computer science, the true definition of a bijection is between what could be considered indexes and whether or not there's an occupation within each. This is seen above with |A| = |B| = |C|. We have 5 elements in each set, and all 3 sets have the same cardinality, and a one-to-one bijection can be created between all 3.
Let's extend this logic to number sets and we'll see something very unearthing. If we assume the capacity to create a unique symbol to represent any number, we've defined "base infinity" (base-∞). In this base,
How many indexes are there in ℕ? Infinite.
How many indexes are there in ℚ? Infinite.
How many indexes are there in ℤ? Infinite.
How many indexes are there in ℝ? Infinite.
Again, we do not determine whether or not there is a bijection between these due to a computation. By saying there are infinite indexes, we automatically have a bijection between them. Remember, by the mathematical definition, we do not need to know the contents—whether alpha or numeric. There's simply a bijection due to the pairing of contents of the indexes. Here we can see set A bijects one-to-one with sets B and C, and set B can also biject to set C:
A[0] == 1 → B[0] == 2 → C[0] == £
A[1] == 2 → B[1] == 4 → C[1] == ß
A[2] == 3 → B[2] == 6 → C[2] == ç
A[3] == 4 → B[3] == 8 → C[3] == œ
A[4] == 5 → B[4] == 10 → C[4] == ®
…
We do not care what symbols or quantities are occupying the respective index. Note: While there is a potential computation (2x) that links A[0] and B[0] (or any of A and B) for example, there is not one for A[0] and C[0], or B[0] and C[0] and yet the bijection between them exists.
The important takeaway:
By this logic, this is demonstrating that all infinite sets share the same cardinality. There are no transfinites, no "continuum hypothesis". Boundlessness is extra-numeric and doesn't have "different sizes."
In conclusion:
Indeed, if set A ⊆ set B and B ⊆ A then we have A = B.
If there is a 1-1 bijective function map set P to another set Q we say the number of elements (cardinality) of two sets are equal, and denoted by |P| = |Q|.
If we say |ℕ| has infinite cardinality and |ℝ| has infinite cardinality, the number of potential elements in both is equal, therefore |ℕ| = |ℝ|, and as can be seen in base infinity, |ℕ| is just as "large" as |ℝ|.
In computer science, a function is defined exclusively as a procedure that takes an input (argument) and computes or generates an output based on that input.
In C++, for example, floor() is a function that takes any floating point number as an argument, and computes and returns the value of the input rounded down to its nearest integer. E.g., the input of floor(5.4) computes an output of 5; floor(4.4992) computes 4; floor(3.29492) computes 3, etc.
"Computes" is the very important operative term. A function in this computer science context is a machine that takes an input and computes, or renders an output. You put something in, you get something else out.
Big deal—we have functions in math that compute outputs.
Or do we?
Do functions in math compute outputs or do they map elements only? One may at first think this is no big deal, until we see something very strange going on with number sets.
According to wiki, and confirmed elsewhere:
In mathematics, a function is a binary relation between two sets that simply associates each element of the first set to exactly one element of the second set. What's very important here is that the sets do not need to contain numbers to do so; meaning, there is no computation involved with the generation of values for a target set (codomain).
I.e., the definition of function is simply about ordered pairs of the contents of one set vs. another, not about any procedure that computes the ordered pair.
So if we define set X = { 1, 2, 3}
and set Y = { D, B, C, A }
We can define a function as:
\( f: X → Y \)
The function is defined NOT as a computational procedure, but merely as the set of ordered pairs:
{(1, D), (2, C), (3, C)}
Is there a computation rendering the codomain from the domain here? No. There is a pairing, or a mapping between sets simply as an enumeration or listing of the sets' elements, or symbols. The type of pairing is either injection, surjection, or bijection, and it has nothing to do with numbers or computations thereof to determine the pairing.
Set A = { 1, 2, 3, 4, 5 }
and
Set B = { 2, 4, 6, 8, 10 }
Seem to be related numerically and arithmetically. However, if we pair them as this function:
{(1,2), (2,4), (3, 6), (4, 8), (5, 10)}
We do not do so as a condition of any arithmetic relationship (such as 2x). We simply say there's a bijection between both sets if we can pair the elements one-to-one irrespective of any seeming computational relationship between the numbers. I.e., we are not pairing them due to a computational procedure such as f(x)=2x. We are pairing them as symbols occupying set elements only. The function is the pairing.
Why is this such a big deal?
Because in this context we are actually judging cardinality—or total number of elements—of a set by the number of occupied indexes ONLY. There is a bijectability between A and B below as much as there is between A and C, or B and C:
Set A = { 1, 2, 3, 4, 5 }
Set B = { 2, 4, 6, 8, 10 }
Set C = { £, ß, ç, œ, ® }
It's tempting to say we "generated set B" by the procedure f(x) = 2x. Indeed, if we put the values of set A through f(x) = 2x, we can actually generate the elements residing in set B. But a bijective function is NOT defined this way: It is defined ONLY as a one-to-one pairing between existing set elements, independent of the representation of the elements, whether alpha or numeric. Whether alpha or numeric is key here.
Even though a set in mathematics doesn't have addressable indexes like an array in computer science, the true definition of a bijection is between what could be considered indexes and whether or not there's an occupation within each. This is seen above with |A| = |B| = |C|. We have 5 elements in each set, and all 3 sets have the same cardinality, and a one-to-one bijection can be created between all 3.
Let's extend this logic to number sets and we'll see something very unearthing. If we assume the capacity to create a unique symbol to represent any number, we've defined "base infinity" (base-∞). In this base,
How many indexes are there in ℕ? Infinite.
How many indexes are there in ℚ? Infinite.
How many indexes are there in ℤ? Infinite.
How many indexes are there in ℝ? Infinite.
Again, we do not determine whether or not there is a bijection between these due to a computation. By saying there are infinite indexes, we automatically have a bijection between them. Remember, by the mathematical definition, we do not need to know the contents—whether alpha or numeric. There's simply a bijection due to the pairing of contents of the indexes. Here we can see set A bijects one-to-one with sets B and C, and set B can also biject to set C:
A[0] == 1 → B[0] == 2 → C[0] == £
A[1] == 2 → B[1] == 4 → C[1] == ß
A[2] == 3 → B[2] == 6 → C[2] == ç
A[3] == 4 → B[3] == 8 → C[3] == œ
A[4] == 5 → B[4] == 10 → C[4] == ®
…
We do not care what symbols or quantities are occupying the respective index. Note: While there is a potential computation (2x) that links A[0] and B[0] (or any of A and B) for example, there is not one for A[0] and C[0], or B[0] and C[0] and yet the bijection between them exists.
The important takeaway:
By this logic, this is demonstrating that all infinite sets share the same cardinality. There are no transfinites, no "continuum hypothesis". Boundlessness is extra-numeric and doesn't have "different sizes."
In conclusion:
Indeed, if set A ⊆ set B and B ⊆ A then we have A = B.
If there is a 1-1 bijective function map set P to another set Q we say the number of elements (cardinality) of two sets are equal, and denoted by |P| = |Q|.
If we say |ℕ| has infinite cardinality and |ℝ| has infinite cardinality, the number of potential elements in both is equal, therefore |ℕ| = |ℝ|, and as can be seen in base infinity, |ℕ| is just as "large" as |ℝ|.
Last edited: