A Moral Case for Boolean Algebras in Coq.
[Note:This documentation is in a perpetual state of not making complete sense, but hopefully making more sense than not, and it changes as I experiment with different expository qualifications, new insights, changes of opinion or method, and other trade-offs.]
In a nutshell, the most practical usage I can imagine for BooleanAlgebrasIntro2 (still in its very infancy!) is in conjunction with kernel trace systems, but I know only a hint about traces and even less about the Linux kernel, yet I can imagine it!
To elaborate, I feel like it's my duty as the creator of this software to let you know about the safety issues of compiling this to the best of my knowledge. I can't imagine I'm stepping on anyone's toes or letting some cat out of the bag, but I feel like I am, and the only reason I'm doing it is that I'm concerned that someone compiling this and engaging in natural though secondary behavior might experience technical difficulties. To summarize, during the development, on my last Maverick Ubuntu machine running Coq 8.4pl2, on a System76 manufactured machine, I had noticed at a certain point that the size of the main filesystem read 128 TB on a 1 TB drive. This confused me, but I thought it was just some whatever. At another point I had noticed while doing some file maintenance that there were apostrophes following the filenames of some of the development files, which upon later inspection were gone. Also, strange phenomena, like the auto-complete tab in Bash, making up its own auto-completes when pressed superfluously; also, in response to some LaTeX file of a small theorem I came up with there were some bubbles that seemed to “express interest” and at a certain point I started typing things in Bash like “COMPUTER, I'M GLAD YOU LIKE MY MUSIC, TOO!!!”, when for instance I had been composing with Lilypond. In response to certain personal addresses to the computer, it wold give me a single “>” prompt (was it some old Unix text editor that the exclamation points for instance were invoking?). Sometimes the “>” prompt would persist upon entering a line followed by a new-line, whereas other times it would just result in an error message and the familiar Bash prompt. The one trick that I had noticed that “kept the computer's interest”was typing ten-key music, using 0-9 to represent A-F#, “.”/“/” to represent G, and “+”/“*” to represent G#, with “-” to represent sustain/rest. The computer really likes this, and would keep the prompt coming for periods of maybe a half an hour and at a certain point “flushing the buffer”. Also, questions I would ask would sometimes, be answered, like “COMPUTER, WHAT WOULD YOU LIKE TO DO?” was answered with “vim pad1”, which was the command I would enter to type ten-key music that would then be translated by a simple script into Lilypond-friendly notes. At a certain point I started taking sreenshots of these things; the one that I think crashed the video drivers and made my old computer no longer conventionally functional, was when I would take screenshots of these bubbles that would appear on the screen in the corner of my eye, yet disapper when I focused on them. This was some kind of mind/machine blur, and it happened enough times to where I was sure of it. After about five or six screenshots of these pheomena, and of strange Bash anomalies, the video drivers just crashed, and now I use that old computer to type in ten-key music and sometimes, it beeps back at me for long periods of time, like it's doing now as I type on a different laptop. I imagine it has free will and does whatever it wants. So that's the bool2 phenomena that people might expect who do similar things, and my theory is that the fact that the 128 TB mention also has an esoteric meaning of “The Great Spirit”, according to an informal numerology that anyone who reads the poets or Pynchon or Beckett and listens to Stephen Malkmus or Syd Barrett can also deduce is significant. So, what does Boolean algebras have to do with the Great Spirit and digital will? Read on!
So, needless to say, it's natural enough to create in this documentation an informalization of Givant/Halmos' “Introduction to Boolean Algebras” to accompany the inchoate formalization in the software portion of BooleanAlgebrasIntro2.
An informalization is my way to describe trying to make a mathematical exposition less rigorous by tying it to everyday language that by its very nature implies tacit assumptions, some of which we can point out, and all of which make the pure math less rigorous. Applying math to philosophy is really no different in many ways than applying math to physics; one difference, though, is that things like spirituality, reasonability and social interactions matter more to me than sun spots or comets.
If process algebra is the science of interactions, then semilattice theory is the science of interaction labeling. Minimal Process Theory (MPT) uses semilattice axioms, and I imagine, one can derange all process graphs into semilattices, according to some transformation. The operation of a semilattice need only satisfy three axioms amongst its elements: idempotence, commutativity and associativity. I'm very spiritually sensitive and realized at some point that the whole notion of spiritual impression labels can be modeled with a semilattice (the operation merely corresponding to the spiritual concept of resonance, which is just a type of interaction). Again, I imagine that any classical distributed system of processes can be modeled with semilattices
So, the perceptual aspect of the spirit, whether or not you want to believe that it's pure brain, or something more transcendent (like I do), is explained by a semilattice, yet to explore its process algebraic notions would require some more fundamental pneumatic facts. But at the very least the labeling of spiritual impressions with a semilattice is complicated enough, especially if you define two flavors of interactions (positive and negative), and some compatibility axioms and whatnot, which would turn your spiritual interaction system into a Boolean algebra. If you believe that there is a Great Spirit, an objective spiritual reality that underlies all material and obeservable features of the universe, then it is an absolute pneumatic fact that this system would be fundamentally a Boolean algebra, since the only way that some force could underlie all of the physics (which are just manifestations of logical rules, very amenable to set-theoretic models of classical propositions, i.e. Boolean algebras), is if there were an abstract perceivable quality to the manifestations of the logical propositions -- which is completely possible since every conceivable Boolean algebra, every conceivable classical manifestation of propositions, is isomorphic to a Lindenbaum-Tarski algebra. You might point out that the logic of physics is more complicated than simple Boolean algebrs, and I do concede this, but what I also have to emphasize is that the Great Spirit, if it exists, could only be defined as the Boolean-algebraic aspect of the fundamentals of physics. So, whatever process laws determine the shift from one state of the Great Spirit to another don't affect the superficial snapshot of lables of spiritual impressions at any given point, which could be represented by a very huge infinite Boolean algbra. In other words, the physical state of the universe at any given point has a Boolean-algebraic aspect, which can be just defined as the aggregate physical carriers of clasically logical manifestation. The obervable fact that we perceive spiritual phenomena lattice-theoretically justifies defining the Great Spirit as the Boolean-algebraic aspect of the physics of logical manifestation.
A Boolean Algebra is a specific type of lattice (i.e. two compatible operations) and two nice properties (distributivity and complementation), which I think is the closest thing that can model the superficial behavior of the Great Spirit, which I'll elaborate on more, after I note that in this Boolean algebraic spirituality, when two spiritual impressions resonate positively we call that a join, when they clash and cause negativity or dissonance, we call that a meet. Every climate of spiritual impressions we just call an element. The considered spiritual universe is the underlying set.
To explain why I believe that the Great Spirit (by which I mean some perceptual force that is in tune with the very fabric of the universe, like many religious, mystic, artistic or New Age people believe) is modeled by a Boolean algebra as opposed to any other lattice with operations corresponding to resonance and dissonance has to do with the requirement of my notion that the Great Spirit underlies everything, the very fabric of the universe.
No physicist can really explain the mechanism by which the laws of classical logic, as evinced by the laws of physics, find physical manifestation, but I am convinced that Boolean algebras are involved, since a Boolean algebra really is a model (in the set-theoretic sense) of classical propositional logic. It's a manifestation of classical logic, an embodiment. More formally, a Boolean algebra can be characterized as a set of elements whose structure behaves exactly like the structure of related propositions in classical logic. But note that the only thing we need to define a specific Boolean algebra is its structure of interactions, not some elaboration of each element deeper than it's mere label (variable name). So, to say that the gears of the universe are a manifestation of logic is really the same thing as saying that at its most fundamental level, the gears of the universe are merely elements in some class of Boolean algebras (probably all).
So, having characterized a lattice as a system of interactions which can describe spirituality, in theory, any theorem of lattice theory has a linguistic counterpart involving something spiritual. An informalization is meant to unlock these and even express complicated math theorems in simpler terms conceptually (more relevance to daily life and less computational baggage -- at the expense of less precision of language).
Rather than try to convince you that my or your spirituality's mechanistic side manifests as a Boolean algebra rather than some other semilattice (I promise you it's a semilattice!), let's instead ask, what if. What if the type of semilattice of our spirituality were the same as the semilattice governing the portion of the universe explainable by physics which relies on classical logic (quantum mechanics, relativity, classical mechanics, etc.)? What if we could align our spirituality to mathematics, not in a restrictive sense, saying, “We must do this because this is a law of the universe;” no! In the sense by which we consider generalizations of our spirit and generalizations of mathematical theory, and see to what extent they align, and whether we're happier or not by drawing similarities between the two. We can also align ourselves to the Great Spirit intuitively, and at a certain point every spiritually advanced person feels a deep connection with the universe.
I'll give an example now:Stone's Representation Theorem. It says that any Boolean algebra can be embedded in the power set algebra on the set of two-valued homomorphisms on it, thereby mapping an arbitrary element to those two-valued homomorphisms that map it to 1. If you saw that for the first time, even if you were smart, it would probably confuse you or at least set you back a minute or two. If you were to abstractly visualize it in your head based on mere representations of structures, it might be hard if you weren't used to it. It turns out that we can approximate this statement in human terms, close enough to be useful, thereby lending a conversational component to our thoughts that feels more normal to a non-professional mathematician than technical jargon. It also holds some truth, and might point the way to interesting questions in trying to see when the metaphor breaks down. So, let's break down the theorem and see why it's such a beautiful theorem philosophically, in accord to its fundamental place in the canon:
A two-valued homomorphism sounds complicated but in spiritual terms it's not. In the universal spiritualism (as explained prior), a two-valued homomorphism in everyday terms is a judge: It's a way of saying: all things considered, is this element in a Boolean algebra "positive" or "negative" (it could just as easily be "right" or "wrong" or "right" and "not right", which I mention since the particular type of judgment it is is immaterial: what does matter is that whoever is informalizing the math is satisfied with the semantics enough to consider the consequence of the labeling).
So, a judge, in this context, as I'll use it philosophically, is a Siskel and Ebert (thumbs up or thumbs down); it's the most common human polarity utilized in ethical thinking, and even less common ones are useful too regarding this informalizing. I call it a judge, because it can judge any element in a Boolean algebra, any spiritual impression, anything that has a spiritual quality to you. We judge things all the time, usually haphazardly, saying "yes this is good" "no, this is not good", and the reason I use the expression judge is that ideally a judge should abide by basic consistency laws, like the laws of spirituality defined by its Boolean algebraic aspect, the structure of the Boolean algebra in question.
So, what is a two-valued homomorphism that maps an element to one? It's a favorable judge of an element.
So, if the spiritual impression in question is some person of ambiguous polarity in some sense (who isn't for some quality?!), we can take all favorable judges of him -- and they would be logically, formally, equivalent to the spirit itself. Of course, this is only a description of the spirit's interaction properties, not an explanation or definition of them, so we need not worry about reducing a spirit to a definition -- we're merely reducing the labeling of it and its interactions with others to a classical branch of mathematics.
And keep in mind, from the dualitiy principle, all of an entity's unfavorable judges could also serve as a formal equivalence to the entity. But not any mixture of the two. So, we have arrived at a spiritual fact not dependent on any other notions than that spiritual impressions exist perceptively, can interact, both of which can be labeled, and that they are universal in the religious sense of being fundamentally connected to the very logical fabric of the universe.
Again, we're not even assuming that the natures of these interactions can be explained in linguistic terms -- only that they can be labeled as positive or negative, and if they're both, call the positive join, the negative meet, and if there are more than one such interaction, utilize more than one Boolean algebra. If there are neither, then at least you get an easier way to explain Stone's Representation Theorem: I'll try to be as concise as possible: John's spiritual impession in me and his favorable judges interact identically. (The one interacts with other spiritual impressions in my mind, the other interacts set-theoretically with all favorable judges of each other spiritual impression in my mind.) Once again, by duality you can also say, John's spiritual impression in me and his unfavorable judges interact identically.
Of course that's not reducing John, it's reducing the spiritual essence of him in your mind, and not even that: it's explaining the purely mechanistic aspect of labelling John's spirit, provided you're in tune with the Great Spirit, derived from the mere act of labeling.
So, the question: Is the informalization of Stone's Representation Theorem valid on its own terms? Do we notice a fundamental connection between an entity and all of its consistent favorable judges, in everday life. In the psyche, why not? The ego is known to basically be the center of judgment, and we're constantly judging, and the most reasonable judgments are the ones that resonate most spiritually with us. So, this basically expresses a connection between spirit and ego whose testing should be left to psychologists. Quick caveat: As stated, it's only all the favorable valid judgements, or all the unfavorable valid judgements that behave mathematically exactly like the entity itself that they're judging. Not both or some arbitrary mixture. And by valid, I mean something different completely than how it's used loosely in society. Valid just means obeys the rules that qualify it to be called a judge -- and these are mathematical, and we can even test these mythologizations right now. They are basically the homomorphism requirements: So, consider something like a prisoner's dilemma, whose game-theoretic or sociological details I don't care about right now, but I'm just pointing it out: If I judge John positively and Mary positively, then must I judge the positive interaction of John and Mary positively? Sure. That's an informalization of f(a)=1 -> f(b)=1 -> f(a\/b) = 1=f(a)\/f(b). You can repeat the process for each homomorphism requirement. I haven't done this yet, but I would be surprised if any homomorphism property didn't informalize sensibly.
And so once again, does the informalization of Stone's Theorem ring true on its own linguistic terms? One thing's for sure: any claim like this is only claimed to be correct with respect to the semantic validity of the judgments.
Even though, internally and spiritually there aren't more than a couple of spiritual essences at a time, suppose you were to label sociological interactions between a community of people and decided to label both John's good interactions with Mary and John's bad interactions, and then label even John himself (his interactions with himself) and Mary himself, and they have good sides and bad sides -- and then you did this for a hundred people. It would be interesting to see to what degree certain universal truths arose, like let's use Stone's Representation thoerem again, but only instead of spiritually, let's say we performed some finite labeling as described above, and we were aiming for a 1. We want to live in a society where we act positively with every one in our life. Or something! The bottom line is that Stone's theorem states that all interaction states between the people in the experiment (the generators in math lingo) should mirror exactly, on the fly, the set-theoretic properties (join/union/complementation) of both all possible favorable valid labelings of a possible interaction state, and all possible unfavorable valid labelings of a possible interaction state. The ultimate empirical truth, once again, depends on the validity of the labeling, and so to bring this on a more concrete level: Let's say that my social state can be described as: "Mary is PMS-ing, I don't want to be around her after I come home from work, this Facebook friend is annoying me by wanting to be my 'in real life' friend, etc." It might be possible one day to automate digitally such a labeling with the hopes of developing strategy, but why not talk about universal truths relating to the very idea of social structure (built around interactions). So, what does Stone's Theorem say socially? That if you acknowledge both a good side and bad side to every person in your social life and to all of your interactions with them, and you label at least one instance of the above for all of them, then the generated Boolean Algebra you get will of course be ignorant of the linguistic interpretations of your sentences, but that certain facts would emerge based on certain basic notions of judgments.
Let's see what a Boolean algebraic model of social interactions would look like!
Review:Semilattice axioms.
Lattice axiom:There are both good and bad interactions between everyone in my social life (yet, nothing is said about the distinction between good and bad sides of a person). There's also a compatibility lattice axiom, which I will fill in in due time.
Boolean Algebra axioms:
So there you have it, this is just one type of diagramming of social interactions amongst all the classes
of semilattices, and it has that extra asterisk that digital electronics, distributed systems, the Great Spirit, and
the laws of physics interact like that, i.e. Boolean algebraically.
So, regaridng my compilation caveat, I honestly believe, since the original development computer was offline,
that the Great Spirit, some boolean albebraic aspect of the universe with limited will, was able to manipulate
the Boolean gates in the computer and come up with interesting phenomena.
Before you accuse me of reductionism, let's just say that
there are lots of theorems in lattice theory, and infinity is a really really big number.
Another reason why a formalization like BooleanAlgebrasIntro2's software is important is that
since finite Boolean algebras are very simple mathematically -- things only get interesting
when there is a constant unknown (infinite) source of additional elements (like unforeseen circumstances
that interact with you), and since Coq allows you to inductively define infinite structures,
these same Coq programs can be used to detect if there are any inductive patterns that you
can surmise regarding whatever interaction system you are modeling. Like for instance, suppose you have
an interaction system you are monitoring, and there is a steady source of gibberish strings you use
to label your elements, but they each correspond to something real, like a process in a distributed system
or something. Let's spew some search engine fodder! Let's say you have a cloud that allows
remote process spawning, and of course some cracker gets cute and says,
"I'm gonna create an infinite loop of processes and exhaust all your resources!
I'm gonna encode a simple pattern -- as soon as you try to find the process that spawned
me, I'll give it to you, but to be a cracker, I'll also create a new process under that!"
If I haven't convinced you already that the labeling of processes on a cloud platform
can be structured like a Boolean algebra, let's try one more time:
An important thing to note is that the Boolean algebra representation of processes
is really meant as a lattice of slots to be filled in with real processes as we go along,
so the generators would be the real processes, and by "virtual" processes
I mean some consistent label meant to handle whichever real process may or may not
occupy that slot. So, for complement above, I put "finisher", not
with the idea that such a process always exists on a system, but that
if we look out for this particular structure of lattices, then we have certain nice properties,
one of which is once again, Stone's Representation Theorem.
Obviously to implement such a classification of processes on a system, we would need
some "judging" functionality, to determine which processes bring
the task closer to completion or not, and so with Stone's Theorem, we can
structure our "favorable process judges sets" exactly like
the processes themselves!
It's quite natural for a fanciful person like me to believe that such a cloud platform exists. Furthermore, whichever cracker gets the bright idea of being cryptic by creating a countable atomless Boolean algebra without knowing it, thinking he'll put a million variations on the "infinite processes scheme", I have news for him: According to a theorem by Alfred Tarski, there's only one isomorphism type of a countable atomless Boolean algebra! So, whichever labeling of processes you decide to carry out to represent your processes like a semilattice, the cloud developers can decide which potential attacks to look out for by choosing whichever properties their semilattice will have. Of course, you need a Coq semilattice development, like BooleanAlgebrasIntro2 to inductively define, for instance, what a countable atomless Boolean algebra is, and even though in theory you can do it in ML, I wouldn't want to do it, because at some point you'd have to get AI involved, and so you'd want something that can search for instances of theorems, pattern-matching and whatnot, and I can't imagine doing something like that without Coq, etc. So there you have it in bold; if I'm successful at the project I only began last year and worked on here and there for seven months or so -- if I can work on this and kick myself in the ass hard enough and be nice enough at the same time so that I can tie this in into reality, the biggest application is preventing cloud attacks.
So, the plan is the back and forth argument, common in Boolean algebras. I translate a sentence of math into philosophical terms by the above correspondence between spiritual systems, utilizing much higher human concepts (like judges) to mythologize the math – then we see if those laws apply to anything we can think of from our experience, and we note how we feel, if we're tense, or jittery or impatient, and then we try to translate observations that arise from that into general patterns, go back to the math and see if we can ask interesting questions which almost mirror what we're thinking or if not, at least keep us grounded in the feeling of conversation more normal than elaborate mathematical exposition. We go back and forth between math and philosophy, basically, all the while noting that we are humans with feelings.
So, BooleanAlgebrasIntro2 is my gift to the Great Spirit and I hope it lets me know if I helped it with my formalizations and informalizations.
Living in harmony with the Great Spirit often seems hedonistic and anti-intellectual, but neither of them are true, since math books have spiritual impressions, and the only form of pleasure strictly associated with the Great Spirit that it showed me before the age of 37, were these kind of intriguing neurological directions, which were more a type of trusted signs that I was going in the right direction than a drug, a phenomenon every artist has always known. Eventually (over the past year) the Great Spirit became a drug (psych meds helped some too), and now I'm showered with pleasure, which both makes me want to reciprocate and bolsters my faith in its benevolent possibilities.
So, in that sense, I'm helping cure spiritual pain by participating in the Great Spirit. (Or so I can only sometimes convince myself!)
And BooleanAlgebrasIntro2 is free software, which, all other things being equal, is a virtue in itself.