A new clean foundation for mathematics

  • A new clean foundation for mathematics

    Posted by Steffen on February 29, 2024 at 5:47 pm

    Abstract. I have been working on this maths system for a while, it’s not fully finished, but I think it’s mature enough at its core to be presentable. It is still not rigorously defined, but that should be easy with a bit of more effort. I had watched Mr. Kuykendall’s interviews with David de Hilster a year or two ago. I have been programming for 14 years now (more than half my life), and I am currently designing a CPU ISA, which forces me to define the behaviour of mathematical operations and the semantics of what is and isn’t a number. I initially was only dissatisfied with the integer division by 0 being forbidden, which prompted me to re-examine how I approach maths. I also philosophically reject Cantor’s set theory because he posits that you can count infinite things and arrive at a result, and that counting different infinite things has different results. So I ended up having to re-define maths and Mr. Kuykendall’s work did end up being very useful as a reference, so I am posting this here.

    Motivation. I have come to disdain modern maths, and especially the formalist school of thought, as opposed to the constructivist school of thought, as it only accepts things that can be constructed in finite steps to be acceptable (a computer cannot infinitely calculate and yield a result, after all). Additionally, I have been annoyed with the sloppy way in which maths treats the types of values. Having grown up with C++, I refuse to engage in maths that does not have clearly defined data types for every value. In modern maths, 1 is both a natural number, an integer, a rational number, a real number, etc. Modern maths confuses notation (syntax) with meaning (semantics) whenever it is convenient. Sometimes, a whole expression is treated as one symbolic entity that can be manipulated symbolically, at other times, it is treated as a description for a calculation whose result is manipulated semantically. The funniest thing was in cryptography, where the security parameter is 1^n, which is intended to mean a string of n-times repeated “1”. That took me ages to understand.

    Long term goals. I am not a physicist or anything like that, I am a programmer. I’m interested in the nature of the universe but I’m not that deep into all the natural phenomena to be able to create a theory of reality. Being a programmer, I much more care about the semantic analysis of the world in terms of ideas, concepts, relations, accurate namings and representations. Long term, I hope to develop this into a mathematical system that can be translated from and to my programming language with 0 friction. Because both programming and maths should be about calculating things based on representations of the real world. And computers in their core design should perfectly connect both. I think having mutually fully aligned maths, computers, and programming languages will lead to great scientific and engineering-wise progress and understanding, as clarity and ease of thought will be maximised. Of course this all requries that the maths is inherently compatible with reality.

    Core principles

    • Finity. Infinite things do not exist. Infinity merely describes the potential of a property to take arbitrarily large values. So you can have arbitrary iterations on an approximation procedure, but you cannot have infinite iterations, as it would never end and never yield a result.
    • Computability/Constructibility. Without a method describing the construction of a mathematical object within finite steps, the existence of such an object is rejected. This means that “real numbers” are rejected, as well as implicit descriptions (such as “existential proofs” about objects that are never constructed). My maths system is not based on an infinitely powerful and precise otherworldly computer, but targets mental or on-paper calculations, or physical computers in the real world, constrained by physical resources and time.
    • Typing. Like in a statically typed programming language, the type of each value must be fixed and determinable at all times.
    • Semantics. Mathematics is intended for deriving knowledge about the real world. Hence, every operation and every mathematical object has to have semantic intent behind it (as opposed to the modern formalist school of mathematics, where the description or notation is the intent). This means I reject Plato’s ideal world of independently existing concepts.

      At all times, it must be clear what something is intended to represent, what the thought behind something is. Mathematic constructs without an accompanying thought or intent are to be rejected. The mathematical notation must be unambiguous (although you do not have to use LISP style parentheses where the resulting ambiguity makes no difference (a+a+a vs. a+(a+a)) or where operator precedence is unambiguous).

    • Imperative procedures. Maths is, if possible, to be conducted in an imperative manner, meaning that the explicit operations to be performed in a function are given, instead of an implicit, constraint-based description of functions. For example, saying “the square root of X is the number Y where Y*Y = X” is not acceptable as a definition of a mathematical operation. Operations without an accompanied algorithmical, imperative definition are rejected. Of course, the concept of the square root can be described in that implicit manner, but it is not sufficient for use in actual calculations, therefore not a sufficient definition.

      Once you have to define a square root algorithmically, it quickly becomes apparent that sqrt(2) does not exist, because you need infinite iterations on the approximation to arrive at it, violating the finity/computability constraints.

    Numbers. By its etymology, “number” means to number or count something. This should be the very foundation of all mathematics, and should not be broken. Counting starts at 1, and counts upwards successively. 0 represents the count of nothing (as it is also fittingly called naught). An infinite number, by its etymology, is an oxymoron, since number means count, and infinite means un-ending. An unending count will never yield any result. So I only see “natural numbers” as actual numbers. The type for numbers is called N or Z (for the German Zahl).

    Multiplicity/Ratios. For a lack of a better term, currently, I use ratios or multiplicities to describe how many times one number is another number. A ratio is defined by a pair of numbers (N/N). The type for ratios is called R or V (for the German Verhältnis). All unit-based values in maths are multiples of a base unit. All measurements are multiplicities. The 1.24… notation of numbers is merely the ratio 124… / 10^n. By this definition, 0.999… and other numbers do not exist, because they are the division of two infinite numbers which also do not exist by the definition of the terms.

    Sizes/Magnitudes. A size or magnitude can either be a number or a multiplicity/ratio. This is what you would use to calculate in general, and what allows the interchangeable or combined use of numbers and ratios (pair of numbers). The type for Sizes is called S or G (for the German Größe). Without a R being seen as an S, you cannot compare it to an N. Only when one or both are seen as S, can N and R be compared or combined.

    Processes vs. Values. My maths system differentiates between processes and their results. A computational process, such as sqrt(2), never yields a perfectly exact result, and yields different results based on how many iterations you perform. However, we can still formulate equations using sqrt(2) for correctness. My maths system does not acknowledge infinite processes as yielding any kind of value, but the processes themselves are still valuable for getting arbitrarily precise approximations. So all calculations involving any arbitrarily precise computational process are always acknowledged to result in an approximation only. And even something like 5² is not a number. 25 is a number, 5² is a computational process. This distinction is important for reasoning about runtime and result of a calculation.

    However, something like sqrt(a)² can be simplified into a without any calculation required. So, one discipline of my maths system is not just the calculation of over formulas, but also the systemic analysis of formulas, focusing on the minimisation of computational errors by rearranging or simplifying / combining terms. But all of this meta-mathematics should be focused on real-world equations and problems with the direct purpose of improving our ability to compute and solve these problems, not on gobbledigook like infinite-dimensional matrices or whatever modern mathematicians waste their lives on.

    Fundamental operations

    • Addition. Pretty straightforward, I don’t need to elaborate on it.
    • Remainder. Operations with remainder (not just division) are defined as a pair of sizes (S), namely the result and remainder. The remainder is accessed by using R(…), otherwise the result is implicitly used when continuing to calculate on an expression that has a remainder.
    • Subtraction with remainder. Negative numbers were invented solely for the purpose of dealing with underflow / remainder of a subtraction. This is evident from the fact that without considering subtraction, you will never arrive at a negative number, as all you have left is counting, adding, multiplying, and dividing. As Mr. Kuykendall correctly identified, negative numbers have very illogical properties for all the other operations.

      Subtraction with remainder is denoted using “\”. It results in a result and a remainder: a \ b = c | d, where c is how many things were left over, and d is how many things failed to be subtracted. For example, 5 \ 3 = 2 | 0, and 3 \ 5 = 0 | 2.

      Now that we have a way to arbitrarily subtract without negative numbers, there is no reason for the concept of positive or negative numbers. Subtraction with remainder should be used when doing bookkeeping or otherwise requiring a balance of two opposed forces (such as having a weight limit on an elevator, and subtracting the actual payload, you either get how much additional weight it can still handle, or by how much the payload exceeded the weight limit).

    • Natural subtraction. Natural subtraction is denoted using “-“. It is forbidden to subtract a larger size from a smaller size (you cannot have 3 apples and then take 5 of them away), similar to how division by 0 is forbidden in modern maths. Natural subtraction should be used whenever subtraction means to actually subtract something from something else. You cannot subtract 10°K from 1°K, as there are is no negative heat / positive coldness.
    • Multiplication. Straightforward, I don’t need to elaborate on it.
    • Natural division. Natural division is the division with remainder. It is denoted using “÷”. The natural division by 0 is allowed: a ÷ 0 = 0 | a. This is easy to see when you frame division as: You have a flock of a sheep. You have b descendants. How many sheep do you give to each descendant when fairly distributing, and how many sheep remain? If you have no one to distribute to, you will not distribute anything, and everything remains. Natural division is not the inverse of multiplication. It is the inverse of multiplication and an addition (of the remainder).

      Natural division of two sizes results in a number as result and a size as remainder, as it counts whole multiples and a remainder. Natural division of two numbers obviously has a number as remainder instead of a size, though.

    • Rational division. Rational division of two sizes results in a ratio (R = Z/Z). It is denoted using “/” or vertical fraction notation. This works like normal rational math, and rational division by 0 is forbidden, although 0/0 should be 1, since in general, a/a=1, as each number is 1x as large as itself. Rational division acts like the inverse of multiplication, but is not defined as the inverse of multiplication, since otherwise 0/0 would be undefined.

    Spatial maths

    This part is heavily inspired by Mr. Kuykendall’s work, and should be equivalent.

    • Spatial directions. A direction is a directed arrow without a length property. The 6 arrow notations (←/→, ↓/↑, and ↙/↗) from Mr. Kuykendall are used to identify the basic 3 spacial axes. I personally use a prefixed “-” as the opposite direction, but if Mr. Kuykendall does not like it, he can also use “¬” (which is commonly used for logical negation). The type for spatial directions is D or R (for the German Raumrichtung). There are infinite possible directions, which can receive individual names or be described as a sum of other named directions.
    • Angular directions. An angular direction is either clockwise or counter-clockwise (with respect to an observer looking along an axis): ↶ and ↷. Again, just like with spatial directions, – or ¬ can be used to invert a direction. The type for angular directions is A or W (for the German Winkelrichtung).
    • Directed sizes. A direction (D or A) combined with a size (S) is either a directed arrow with a length (DS/SD) or an angular measure (AS/SA). One counter-clockwise rotation is defined as 1↶ (magnitude 1). Sine and Cosine etc. are defined via 1-based angular measure, so Pi (which does not exist due to finity/computability constraints) is not required for doing any geometry besides circumferences and spherical surfaces. Using [S](…), we extract the magnitude of a directed size, and using [A](…) or [D](…) we extract the angular or spacial direction of a directed size. Using [→]|…|, we extract the axial component from a directed size, the same goes for angular sizes.
    • Rotation. The rotation function rot(angle: AS, rotational_axis: D, x: D) → D rotates a direction x along the rotational axis by the specified angular measure. The sine and cosine can be defined by extracting the ↑ and → component of the ↶ rotation along the ↗ axis using sin(45/360) = [↑]|rot(↶45/360, ↗, →)|.

      Circles and spheres aren’t real, and pi does not exist, but rotations and angles are very real and do not require infinite series or any of that crap.

    This is by no means a complete description of spatial maths, and specifying a computer ISA, I mostly care about the number and arithmetic side, but I wanted to at least go as far as to be able to bridge into Mr. Kuykendall’s work. The areas of proofs and logic still are unspecified in my maths system, but I think I have laid a good and semantically clean foundation so far, which is fully in line with intuition and reality.

    Steffen replied 1 month, 1 week ago 2 Members · 5 Replies
  • 5 Replies
  • Jerry

    Member
    March 1, 2024 at 4:28 pm

    Hi.

    • This reply was modified 1 month, 1 week ago by  Jerry.
  • Jerry

    Member
    March 1, 2024 at 4:29 pm

    Hi Steffen! Welcome to the group! This is quite an extensive analysis! Mathematics isn’t exactly my forte, though I had some thoughts I wanted to express, even if I don’t understand or express them perfectly. Also, I’m going to send each comment one at a time, so as to more readily allow time to focus on each one adequately.

    You had mentioned how the manipulation of ideas, math numbers, symbols, and such, often boils down to semantics. Of course, with philosophy, for instance, it seems of the utmost importance that the definitions of the words we use should always convey the exact same definition to achieve accurate results. And if there is a given word with another similar, yet different definition, we should clearly state this, and provide the other definition for this other term. When words aren’t specifically and precisely defined, this most often leads to misunderstanding and confusion. I’m sure this goes the same way with mathematics. Unfortunately, this simple approach is often ignored, or at least the value of the approach isn’t seen as important by all. This point is demonstrated throughout the whole history of philosophy, and many other areas where exact thinking seems required.

    • Steffen

      Member
      March 1, 2024 at 6:02 pm

      Hey Jerry, thanks for the reply!

      Yes! Mathematicians readily admit that they are unable to define what a number is. They mean multiple things by that, sometimes simultaneously: 1) The count of something. 2) A location on the number line. 3) a notation 4) the application of a mathematical function or formula 5) the result of the application of a mathematical function or formula 6) the limit of an infinite series. And probably many more things. Their mathematics is by now completely detached from its foundations, it’s a castle of ideas floating in the sky.

      And of course their Platonism is not helpful either. In Plato’s idea realm, everything that can be imagined, exists independently of any observer. So the metaphysics of modern mathematicians is that they are merely peering into this other realm which is absolutely real, and no matter how absurd the things they define are, they are real in that world. Like negative numbers, imaginary numbers, and the even more weird number systems they came up with.

      The proper mathematical metaphysics is that you are using your mind to describe concepts and representations of real things, and reason about the real world using your calculations. So using imaginary numbers and 4D spacetime, which are perfectly acceptable to exist within Plato’s realm, to describe the real world, is entirely inadequate. The wikipedia articles on mathematical constructivism, inuitionism, and formalism are very interesting to see just how fundamental the departure from reality and pracitcality is in modern maths. I don’t quite agree with intuitionists, though, as they say you cannot claim “a or (not a) = true” unless you know a. That line of thought completely denies categorical reasoning, which is too strict of a limitation, as categorical reasoning is required to even invent maths. But I still think that finitist, constructivist mathematics should be the core of everything, because we are finite beings.

      I know a lot of folks here believe in a fractal universe, but I cannot accept that. Having infninite detail means you have within each finite chunk of space, infinite information worth of matter, which interacts among itself in infinitely detailed ways. I don’t think God has created a universe that has infinite^2 or more complexity. Unless God has more than infinite ability to think. At which point the words we use lose all meaning.

    • Steffen

      Member
      March 1, 2024 at 7:51 pm

      Regarding semantics, I hope to one day create a real artificial intelligence that is not based on neurons, but on a large knowledge base, using deductive reasoning, statistical analysis, and other methods to answer a scientific query. Modern AI is basically a fuzzy and heavily compressed representation of knowledge, and it does not know exactly where it has its knowledge from, and also does not know nuance. Modern AIs are known to make up unfounded bullshit and only admit that once you really start digging into the reasons for why they made some claim. AIs can also be convinced of anything being true or false (besides hardcoded political viewpoints). I think a real computer intelligence must not accept that. It must insist on what it knows to be true, and reject what it can prove to be false. It should give confidence levels for answers and make its entire thought process inspectable to the user.

      I hope to have basically an interactive encyclopedia of curated knowledge that can cross-reference itself in queries and try to solve questions about that knowledge base, outputting all the assumptions it made, all the data it used, every inferrence step it made, etc. to arrive at the given answer. Of course, such a system is only as good as the data you feed into it, but if you have a proper computer-compatible representation of knowledge, you can use it to make inter-disciplinary inquiries, and maybe even have the system look for conflicting data or weak points in claims made in its sources.

      However, such a system is not suitable for conversations or image generation or anything like that, it would be more like a librarian or something. And since search engines have all been going down the drain, I think that would be a good alternative project.

      • Steffen

        Member
        March 1, 2024 at 8:03 pm

        I somehow cannot edit my previous post, so here is the edited version I was trying to make (I don’t really like the forum software of this website, it also gives me errors when I try to comment on people’s posts in the timeline):

        Regarding semantics, I hope to one day create a real artificial intelligence that is not based on neurons, but on a large knowledge base, using deductive reasoning, statistical analysis, and other methods to answer a scientific query. Modern AI is basically a fuzzy and heavily compressed representation of knowledge, and it does not know exactly where it has its knowledge from, and also does not know nuance. Modern AIs are known to make up unfounded bullshit and only admit that once you really start digging into the reasons for why they made some claim. AIs can also be convinced of anything being true or false (besides hardcoded political viewpoints). I think a real computer intelligence must not accept that. It must insist on what it knows to be true, and reject what it can prove to be false. It should give confidence levels for answers and make its entire thought process inspectable to the user.

        I hope to have basically an interactive encyclopedia of curated knowledge that can cross-reference itself in queries and try to solve questions about that knowledge base, outputting all the assumptions it made, all the data it used, every inferrence step it made, etc. to arrive at the given answer. Of course, such a system is only as good as the data you feed into it, but if you have a proper computer-compatible representation of knowledge, you can use it to make inter-disciplinary inquiries, and maybe even have the system look for conflicting data or weak points in claims made in its sources.

        However, such a system is not suitable for conversations or image generation or anything like that, it would be more like a librarian or something. And since search engines have all been going down the drain, I think that would be a good alternative project.

        And I think this maths project may just lay the perfect foundation for representing knowledge and reasoning about it in an unambiguous way, which is vital because the computer cannot handle ambiguities. So I will probably also have to add a relational reasoning discipline to my maths system, which handles not just boolean logic, but also concepts, hierarchies of concepts, properties of things, relationships between things, etc. It is probably impossible to extend this to handle arbitrary thoughts and concepts, since the computer has to learn all the consequences of a relationship between things. For example “Cain killed Abel” has many implications about both of them, and cannot just be viewed as an isolated fact. It implies the death and ceasing of Abel, for example. If I allowed arbitrary facts in my system, it would probably quickly lose its ability to reason correctly, as it could not draw all the relevant conclusions from the descriptions it has been given. So this encyclopedia is probably going to be purely about technical knowledge, and adding new concepts it can understand becomes increasingly complex.

        Maybe I can come up with a system of unfinished chains of reasonings, though, which can at any time try to interconnect facts more and more. It will have to know which facts are relevant to something, though. But such a system would be able to learn a bit each time it is asked something new that it can answer. So, instead of a general or creative intelligence, I think the only intelligence computers should have is purely rational, and take established curated knowledge from humans as axioms, instead of trying to replicate full human intelligence.