Organize mathematical knowledge according to the principles of object-oriented programming paradigm. (An idea concerning the naming-scheme for mathematical results.)

In computer programming, we generally operate with variables and functions. By analogy in mathematics, we generally operate with definitions and propositions.

Recently, the need to increase the code readability made us invent OOP paradigm. It's become so important, that the code that doesn't follow
such paradigm, tends to be referred to as "spaghetti code" due to poor readability.

In mathematics, however, we did not make this leap. From the ancient times, we began naming mathematical results by giving them specific names, and we stick to this tradition.

When there were relatively few results in mathematics, it was not a problem, but in modern days, with skyrocketing amount of results, it *is* a problem. Few mathematicians are good in many subfields of mathematics. A professional mathematician has to move random names of mathematical results into symbolic expressions and long term memory before comprehending the big picture implied by multiple theories.

It has been suggested by examples that mathematics implicitly follow the OO paradigm (see the first link). However, there seem to have been no attempt to organize mathematics using namespaces, multiple inheritance, etc. The simple idea is then, to do it, and make these connections explicit.

Just like an import statement in a computer program lets you import a special package with working variables and methods, conveniently readable and accessible through following the dot-notation, the mathematics, if explicitly organized in OO paradigm, would let you easily and precisely refer and access mathematical results.

Such organization could potentially let more people understand the whole mathematics better, and easily extend it, say, by multiple inheritance, and creation of new classes of objects with novel properties.

(Not sure if this is not yet existing. Computer languages
for pure mathematics do exist, but are they OO?)

Bertrand Russellhttp://en.wikipedia...ki/Bertrand_russell Pioneer of systematization [8th of 7, Sep 14 2012]

IPython Notebook.http://www.youtube....=26wgEsg9Mcc&t=1512 Probably a good starting point. [Inyuki, Sep 16 2012]

// let's OO everything // (Why)http://stackoverflo...o-more-of-those-why "Namespaces are one honking great idea -- let's do more of those!" [Inyuki, Sep 16 2012]

Category theoryhttp://en.wikipedia...iki/Category_theory baked, but called functional programming [placid_turmoil, Dec 26 2014]

Please log in.
If you're not logged in,
you can see what this page
looks like, but you will
not be able to add anything.

I was disappointed to discover that this was not a
proposal for mathematics conducted on a 1:72
scale. I had visions of tiny blackboards, on which
minuscule chalks were wielded by inch-high
mathematicians. No, "disappointed" is too weak a
word. Heartbroken, I say - heartbroken.

However, having managed my own expectations,
this is an interesting idea - a sort of theorem
ontology.

But I wonder whether serious mathematics is
amenable to this. A really nice theorem surely
has much more going on than just inputs and
outputs?

I disagree. I am not a mathematicist by any
means, but I suspect that every significant
theorem contains lots of lemmas which are not
expressed explicitly and independently, but are
nevertheless valuable to mathematicians.

To take an analogy, I can treat my Blu-Ray player
as a black box with disc in and entertainment out.
But, if I understand enough of its inner workings, I
know that I can harvest from it a half-watt blue
laser diode with which I can maim individuals
remotely.

//However, there seem to have been no attempt to organize
mathematics using namespaces, multiple inheritance, etc. //

Sure there has. Arithmetic, algebra, geometry, and so on. There's even
a form of inheritance. Algebra is a subclass of arithmetic, trigonometry is
a subclass of geometry, vector calculus is a subclass of both calculus and
geometry (multiple inheritance!), and so on.

But I'm not sure what this idea is really supposed to mean. Object
orientation is nothing more than an abstraction for the convenience of
the programmer. At its core, /every/ program is procedural. No matter
how much you try to hide what's actually happening, at runtime you've
still gotta calculate 2+2=4. No way around that. Fortunately, computers
are very good at that sort of thing, so we came up with OOP to allow
them to do what they're best at without having to be overly concerned
with how they're going about it. But mathematics cannot be abstracted
in and of itself. Or, rather, it can, but it's called programming.

// But, if I understand enough of its inner workings, I know
that I can harvest from it a half-watt blue laser diode with
which I can main (sic) individuals remotely. //

Yes, but your mad scientist blu-raygun is capable of
maiming anyone, whereas any weapon constructed from
the innards of an abstract mathematical theorem can only
cause harm to other mathematicians.

Asking what software would not be possible without OOP may suggest what could be possible with OO Mathematics.

(1) Collaboration on large-scale projects involving many subsystems would be much harder.

Figuring out the big picture of what the code is doing would involve tracing back all the execution and data flows. In case of object-oriented programming, you see it through interactions of highly abstract objects, and all you need do is just to look at their methods, which are usually self-explanatory. The inherited properties are resolved automatically.

Thus, in OO mathematics: computer could sort out all the properties pertinent to an object, and let you quickly look through the theoretical results pertinent to the objects, and its superclasses.

(2) The reuse of code would be harder.

You would not be able to take some functionality by just importing a member function of a class, and immediately have all you need to execute that function, because that function may depend on a hierarchy of other functions, and you'd have to manually import all of them.

The mathematicians don't have this problem. They are okay with specifying the settings of a problem, because others are supposed to know what is what, and be able to trace-back manually, if needed. (It may be time-consuming for a reader, unfamiliar with the mathematical subfield and new naming of the already-familiar objects, though.)

(3) The modification of code by adding extra properties to classes to enrich its object's behavior would be impossible.

Following the functional programming paradigm, you would have to immediately deal with primitive data types, already provided by the programming language, and choose a different language, if it doesn't support the desired applications, because only the specialists who are working on developing that language, are able to extend its core capabilities, because such extension requires a review of the uses of the object throughout the codebase. (In other words, a person can't just inherit your class, and extend it with something of his or her needs.)

In mathematics, introducing new theories based on the previous, is easy. You just state the previously known objects you will use, and extend them by explaning what extra you add. However, there is a caveat -- new theories usually introduce new naming for those new objects created through inheritance, making the learning of a new theory an exercise in memorizing new names for those same objects with extra properties.

The limits of human memory creates the desire to keep the number of names within the manageable limits, which prevents the approval (and thus, use) of new ad-hoc theories and names (compare: in programming, we can create new classes freely, and they are immediately ready to be used by others, without almost any overhead for memorizations). New theories are accepted and become useful only when a new theory has significantly useful tools, making the memorization of the names of the new constract - a worthwhile exercise.

OO Mathematics could remove that barrier of memorization of new names, and perhaps make ad-hoc theories as prevalent and useful as ad-hoc computer programs (or scripts) on the web.

//Asking what software would not be possible without OOP...//

what ? I can't parse that, sorry.

//Recently, the need to increase the code readability made us invent OOP paradigm.//

err... 3 decades is "recently" ?

//It's become so important, that the code that doesn't follow such paradigm, tends to be referred to as "spaghetti code" due to poor readability.//

sp. "poor reading ability". Those commas are superfluous, btw.

At a quick glance OO seems to be just transferring stuff, previously documented on paper, onto computer media. Apart from increased xref'ing and pigeonholing what's the big deal ?

"The most ancient mathematical texts available are Rhind Mathematical Papyrus (Egyptian mathematics c. 2000-1800 BC)." (Wikipedia, History of Mathematics)

^ and . . . ? Smalltalk-80 hit the public in 1980. You can tell by the "8" and "0" after "Smalltalk". A language name followed by a couple numbers is often used to denote "release date" which, if you apply a bit of mathematics to the object in question, is some 30 years ago.

oh, and as long as I'm here, your "3)" from 2 anno's ago is a tautology.

I mean it's all very well to say "let's OO everything", but when "OO" just means "computerize the crap out of it" . . . <shrug>

Have you any experience in mathematics andor programming ?